package com.phison.fenestrapro.dashboard.data;

import java.awt.geom.Point2D;
import java.io.Serializable;
import java.util.Arrays;
import java.util.LinkedHashSet;

import org.vaadin.hezamu.canvas.Canvas;

import com.invient.vaadin.charts.Color;
import com.invient.vaadin.charts.InvientCharts;
import com.invient.vaadin.charts.InvientChartsConfig;
import com.invient.vaadin.charts.InvientChartsConfig.PointConfig;
import com.invient.vaadin.charts.InvientCharts.DecimalPoint;
import com.invient.vaadin.charts.InvientCharts.SeriesType;
import com.invient.vaadin.charts.InvientCharts.XYSeries;
import com.invient.vaadin.charts.InvientChartsConfig.AxisBase.AxisTitleAlign;
import com.invient.vaadin.charts.InvientChartsConfig.BarConfig;
import com.invient.vaadin.charts.InvientChartsConfig.CategoryAxis;
import com.invient.vaadin.charts.InvientChartsConfig.ColumnConfig;
import com.invient.vaadin.charts.InvientChartsConfig.DataLabel;
import com.invient.vaadin.charts.InvientChartsConfig.NumberYAxis;
import com.invient.vaadin.charts.InvientChartsConfig.Stacking;
import com.invient.vaadin.charts.InvientChartsConfig.XAxis;
import com.invient.vaadin.charts.InvientChartsConfig.YAxis;
import com.invient.vaadin.charts.InvientChartsConfig.AxisBase.AxisTitle;
import com.phison.fenestrapro.dashboard.FenestraProApplication;
import com.phison.fenestrapro.dashboard.util.Functions;
import com.phison.fenestrapro.dashboard.util.GlobalConstants;
import com.phison.fenestrapro.dashboard.util.Notifier;
import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.Panel;

/**
 *
 * 
 * @author Niall O'Hara
 *
 */
public class Project implements Serializable, GlobalConstants {
 	
	private static final long serialVersionUID = 1L;
	
	// Turn on/off debug output
	private final boolean debug = false;
	
	// only save to database when necessary
	private boolean saveValues = false;
	
	private Panel daylightingPerFacade = new Panel("Design Daylighting per Fa�ade");
	
	public void enableSaving(boolean saveValues) {
		this.saveValues = saveValues;
	}
	
	private final Notifier notifier = new Notifier();
	private final Functions functions = new Functions();
	private final WindowShading windowShading = new WindowShading();
	private final Daylighting daylighting = new Daylighting();
	private final Canvas canvas = createCanvas();
	
	// Labels for form generation
	private final String floor0 = "Ground";
	private final String floor1 = "First";
	private final String floor2 = "Second";
	private final String floor3 = "Third";
	private final String floor4 = "Fourth";
	private final String floor5 = "Fifth";
	private final String floor6 = "Sixth";
	private final String floor7 = "Seventh";
	private final String floor8 = "Eight";
	private final String floor9 = "Ninth";
	private final String floor10 = "Tenth";
	private final String floor11 = "Eleventh";
	private final String floor12 = "Twelfth";
	private final String floor13 = "Thirteenth";
	private final String floor14 = "Fourteenth";
	private final String floor15 = "Fifteenth";

	// Labels for form generation
	private final String floor = "Floor";
	private final String windowHH = "Head Height [m]";
	private final String windowCH = "Cill Height [m]";
	private final String WindowRV = "Reveal [m]";

	private AbsoluteLayout projectRootLayout = new AbsoluteLayout();
	
	// Heat Gain Chart
	private InvientChartsConfig heatGainChartConfig = new InvientChartsConfig();
	private CategoryAxis heatGainXAxis = new CategoryAxis();
	private NumberYAxis heatGainYAxis = new NumberYAxis();
	private LinkedHashSet<XAxis> heatGainXAxesSet = new LinkedHashSet<InvientChartsConfig.XAxis>();
	private LinkedHashSet<YAxis> heatGainYAxesSet = new LinkedHashSet<InvientChartsConfig.YAxis>();
	private InvientCharts heatGainChart = createHeatGainChart();
	
	// Glazing Chart
	private InvientChartsConfig glazingChartConfig = new InvientChartsConfig();
	private CategoryAxis glazingXAxis = new CategoryAxis();
	private NumberYAxis glazingYAxis = new NumberYAxis();
	private LinkedHashSet<XAxis> glazingXAxesSet = new LinkedHashSet<InvientChartsConfig.XAxis>();
	private LinkedHashSet<YAxis> glazingYAxesSet = new LinkedHashSet<InvientChartsConfig.YAxis>();
	private InvientCharts glazingChart = createGlazingChart();
	
	// Daylighting Chart
	private InvientChartsConfig daylightingChartConfig = new InvientChartsConfig();
	private CategoryAxis daylightingXAxis = new CategoryAxis();
	private NumberYAxis daylightingYAxis = new NumberYAxis();
	private LinkedHashSet<XAxis> daylightingXAxesSet = new LinkedHashSet<InvientChartsConfig.XAxis>();
	private LinkedHashSet<YAxis> daylightingYAxesSet = new LinkedHashSet<InvientChartsConfig.YAxis>();
	private InvientCharts daylightingChart = createDaylightingChart();
	
	// Start variables that need to be persisted to save project //
	
	// Project information
	private String projName;
	private String projDescription;
	private String projNumber;
	private String facadeType; 
	private String buildingType;
	private String locationSetting;
	
	// Site Location
	private double latitude = 0d;
	private double longitude = 0d;
	
	//Building Geometry
	private double length = 0d;
	private double width = 0d;
	private int storeys = 0;
	private double overallBuildingHeight = 0d;
	private double floorToFloor = 0d;
	private double floorToCeiling = 0d;
	
	//Site Orientation
	private String orientation;
	
	// Performance Dashboard - Overall Performance Requirement
	private Double facadePerformance;
	
	// Performance Dashboard - Thermal Performance Values
	private double uValueRoof = 0d;
	private double uValueGroundFloor = 0d;
	private double uValueWalls = 0d;
	private double uValueGlazing = 0d;
	
	// Performance Dashboard - Overall Percentage Glazing
	private Double percentageGlazing;
	
	// Fa�ade Dashboard - Fa�ade One 
	private double facadeOneGlazedPercentage = 0d;
	private boolean facadeOneGlazedAreaLock = false;
	private String facadeOneGlazingType;
	private String facadeOneGlazingSpec;
	private double facadeOnePercentageFrame = 0d;
	private String facadeOneWindowShadingType;
	private String facadeOneWindowConfig;
	private double facadeOneWindowShadingDepth = 0d;
	private String facadeOneShadingAngle;
	private String facadeOneLouvreColour;
	private String facadeOneSlatAngle;
	
	// Fa�ade Dashboard - Fa�ade Two  
	private double facadeTwoGlazedPercentage = 0d;
	private boolean facadeTwoGlazedAreaLock = false;
	private String facadeTwoGlazingType;
	private String facadeTwoGlazingSpec;
	private double facadeTwoPercentageFrame = 0d;
	private String facadeTwoWindowShadingType;
	private String facadeTwoWindowConfig;
	private double facadeTwoWindowShadingDepth = 0d;
	private String facadeTwoShadingAngle;
	private String facadeTwoLouvreColour;
	private String facadeTwoSlatAngle;
	
	// Fa�ade Dashboard - Fa�ade Three
	private double facadeThreeGlazedPercentage = 0d;
	private boolean facadeThreeGlazedAreaLock = false;
	private String facadeThreeGlazingType;
	private String facadeThreeGlazingSpec;
	private double facadeThreePercentageFrame = 0d;
	private String facadeThreeWindowShadingType;
	private String facadeThreeWindowConfig;
	private double facadeThreeWindowShadingDepth = 0d;
	private String facadeThreeShadingAngle;
	private String facadeThreeLouvreColour;
	private String facadeThreeSlatAngle;
	
	// Fa�ade Dashboard - Fa�ade Four 
	private double facadeFourGlazedPercentage = 0d;
	private boolean facadeFourGlazedAreaLock = false;
	private String facadeFourGlazingType;
	private String facadeFourGlazingSpec;
	private double facadeFourPercentageFrame = 0d;
	private String facadeFourWindowShadingType;	
	private String facadeFourWindowConfig;
	private double facadeFourWindowShadingDepth = 0d;
	private String facadeFourShadingAngle;
	private String facadeFourLouvreColour;
	private String facadeFourSlatAngle;
	
	// Daylight Dashboard - Daylighting Information
	private double wallThickness = 0d;
	private String averageReflectanceOfInteriorSurfacesText;
	
	// Daylight Dashboard - Daylighting Information
	private double facadeOneWindowHH00 = 0d;
	private double facadeOneWindowHH01 = 0d;
	private double facadeOneWindowHH02 = 0d;
	private double facadeOneWindowHH03 = 0d;
	private double facadeOneWindowHH04 = 0d;
	private double facadeOneWindowHH05 = 0d;
	private double facadeOneWindowHH06 = 0d;
	private double facadeOneWindowHH07 = 0d;
	private double facadeOneWindowHH08 = 0d;
	private double facadeOneWindowHH09 = 0d;
	private double facadeOneWindowHH10 = 0d;
	private double facadeOneWindowHH11 = 0d;
	private double facadeOneWindowHH12 = 0d;
	private double facadeOneWindowHH13 = 0d;
	private double facadeOneWindowHH14 = 0d;
	private double facadeOneWindowHH15 = 0d;
	private double facadeOneWindowCH00 = 0d;
	private double facadeOneWindowCH01 = 0d;
	private double facadeOneWindowCH02 = 0d;
	private double facadeOneWindowCH03 = 0d;
	private double facadeOneWindowCH04 = 0d;
	private double facadeOneWindowCH05 = 0d;
	private double facadeOneWindowCH06 = 0d;
	private double facadeOneWindowCH07 = 0d;
	private double facadeOneWindowCH08 = 0d;
	private double facadeOneWindowCH09 = 0d;
	private double facadeOneWindowCH10 = 0d;
	private double facadeOneWindowCH11 = 0d;
	private double facadeOneWindowCH12 = 0d;
	private double facadeOneWindowCH13 = 0d;
	private double facadeOneWindowCH14 = 0d;
	private double facadeOneWindowCH15 = 0d;
	private double facadeOneWindowRV00 = 0d;
	private double facadeOneWindowRV01 = 0d;
	private double facadeOneWindowRV02 = 0d;
	private double facadeOneWindowRV03 = 0d;
	private double facadeOneWindowRV04 = 0d;
	private double facadeOneWindowRV05 = 0d;
	private double facadeOneWindowRV06 = 0d;
	private double facadeOneWindowRV07 = 0d;
	private double facadeOneWindowRV08 = 0d;
	private double facadeOneWindowRV09 = 0d;
	private double facadeOneWindowRV10 = 0d;
	private double facadeOneWindowRV11 = 0d;
	private double facadeOneWindowRV12 = 0d;
	private double facadeOneWindowRV13 = 0d;
	private double facadeOneWindowRV14 = 0d;
	private double facadeOneWindowRV15 = 0d;
	private double facadeTwoWindowHH00 = 0d;
	private double facadeTwoWindowHH01 = 0d;
	private double facadeTwoWindowHH02 = 0d;
	private double facadeTwoWindowHH03 = 0d;
	private double facadeTwoWindowHH04 = 0d;
	private double facadeTwoWindowHH05 = 0d;
	private double facadeTwoWindowHH06 = 0d;
	private double facadeTwoWindowHH07 = 0d;
	private double facadeTwoWindowHH08 = 0d;
	private double facadeTwoWindowHH09 = 0d;
	private double facadeTwoWindowHH10 = 0d;
	private double facadeTwoWindowHH11 = 0d;
	private double facadeTwoWindowHH12 = 0d;
	private double facadeTwoWindowHH13 = 0d;
	private double facadeTwoWindowHH14 = 0d;
	private double facadeTwoWindowHH15 = 0d;
	private double facadeTwoWindowCH00 = 0d;
	private double facadeTwoWindowCH01 = 0d;
	private double facadeTwoWindowCH02 = 0d;
	private double facadeTwoWindowCH03 = 0d;
	private double facadeTwoWindowCH04 = 0d;
	private double facadeTwoWindowCH05 = 0d;
	private double facadeTwoWindowCH06 = 0d;
	private double facadeTwoWindowCH07 = 0d;
	private double facadeTwoWindowCH08 = 0d;
	private double facadeTwoWindowCH09 = 0d;
	private double facadeTwoWindowCH10 = 0d;
	private double facadeTwoWindowCH11 = 0d;
	private double facadeTwoWindowCH12 = 0d;
	private double facadeTwoWindowCH13 = 0d;
	private double facadeTwoWindowCH14 = 0d;
	private double facadeTwoWindowCH15 = 0d;
	private double facadeTwoWindowRV00 = 0d;
	private double facadeTwoWindowRV01 = 0d;
	private double facadeTwoWindowRV02 = 0d;
	private double facadeTwoWindowRV03 = 0d;
	private double facadeTwoWindowRV04 = 0d;
	private double facadeTwoWindowRV05 = 0d;
	private double facadeTwoWindowRV06 = 0d;
	private double facadeTwoWindowRV07 = 0d;
	private double facadeTwoWindowRV08 = 0d;
	private double facadeTwoWindowRV09 = 0d;
	private double facadeTwoWindowRV10 = 0d;
	private double facadeTwoWindowRV11 = 0d;
	private double facadeTwoWindowRV12 = 0d;
	private double facadeTwoWindowRV13 = 0d;
	private double facadeTwoWindowRV14 = 0d;
	private double facadeTwoWindowRV15 = 0d;
	private double facadeThreeWindowHH00 = 0d;
	private double facadeThreeWindowHH01 = 0d;
	private double facadeThreeWindowHH02 = 0d;
	private double facadeThreeWindowHH03 = 0d;
	private double facadeThreeWindowHH04 = 0d;
	private double facadeThreeWindowHH05 = 0d;
	private double facadeThreeWindowHH06 = 0d;
	private double facadeThreeWindowHH07 = 0d;
	private double facadeThreeWindowHH08 = 0d;
	private double facadeThreeWindowHH09 = 0d;
	private double facadeThreeWindowHH10 = 0d;
	private double facadeThreeWindowHH11 = 0d;
	private double facadeThreeWindowHH12 = 0d;
	private double facadeThreeWindowHH13 = 0d;
	private double facadeThreeWindowHH14 = 0d;
	private double facadeThreeWindowHH15 = 0d;
	private double facadeThreeWindowCH00 = 0d;
	private double facadeThreeWindowCH01 = 0d;
	private double facadeThreeWindowCH02 = 0d;
	private double facadeThreeWindowCH03 = 0d;
	private double facadeThreeWindowCH04 = 0d;
	private double facadeThreeWindowCH05 = 0d;
	private double facadeThreeWindowCH06 = 0d;
	private double facadeThreeWindowCH07 = 0d;
	private double facadeThreeWindowCH08 = 0d;
	private double facadeThreeWindowCH09 = 0d;
	private double facadeThreeWindowCH10 = 0d;
	private double facadeThreeWindowCH11 = 0d;
	private double facadeThreeWindowCH12 = 0d;
	private double facadeThreeWindowCH13 = 0d;
	private double facadeThreeWindowCH14 = 0d;
	private double facadeThreeWindowCH15 = 0d;
	private double facadeThreeWindowRV00 = 0d;
	private double facadeThreeWindowRV01 = 0d;
	private double facadeThreeWindowRV02 = 0d;
	private double facadeThreeWindowRV03 = 0d;
	private double facadeThreeWindowRV04 = 0d;
	private double facadeThreeWindowRV05 = 0d;
	private double facadeThreeWindowRV06 = 0d;
	private double facadeThreeWindowRV07 = 0d;
	private double facadeThreeWindowRV08 = 0d;
	private double facadeThreeWindowRV09 = 0d;
	private double facadeThreeWindowRV10 = 0d;
	private double facadeThreeWindowRV11 = 0d;
	private double facadeThreeWindowRV12 = 0d;
	private double facadeThreeWindowRV13 = 0d;
	private double facadeThreeWindowRV14 = 0d;
	private double facadeThreeWindowRV15 = 0d;
	private double facadeFourWindowHH00 = 0d;
	private double facadeFourWindowHH01 = 0d;
	private double facadeFourWindowHH02 = 0d;
	private double facadeFourWindowHH03 = 0d;
	private double facadeFourWindowHH04 = 0d;
	private double facadeFourWindowHH05 = 0d;
	private double facadeFourWindowHH06 = 0d;
	private double facadeFourWindowHH07 = 0d;
	private double facadeFourWindowHH08 = 0d;
	private double facadeFourWindowHH09 = 0d;
	private double facadeFourWindowHH10 = 0d;
	private double facadeFourWindowHH11 = 0d;
	private double facadeFourWindowHH12 = 0d;
	private double facadeFourWindowHH13 = 0d;
	private double facadeFourWindowHH14 = 0d;
	private double facadeFourWindowHH15 = 0d;
	private double facadeFourWindowCH00 = 0d;
	private double facadeFourWindowCH01 = 0d;
	private double facadeFourWindowCH02 = 0d;
	private double facadeFourWindowCH03 = 0d;
	private double facadeFourWindowCH04 = 0d;
	private double facadeFourWindowCH05 = 0d;
	private double facadeFourWindowCH06 = 0d;
	private double facadeFourWindowCH07 = 0d;
	private double facadeFourWindowCH08 = 0d;
	private double facadeFourWindowCH09 = 0d;
	private double facadeFourWindowCH10 = 0d;
	private double facadeFourWindowCH11 = 0d;
	private double facadeFourWindowCH12 = 0d;
	private double facadeFourWindowCH13 = 0d;
	private double facadeFourWindowCH14 = 0d;
	private double facadeFourWindowCH15 = 0d;
	private double facadeFourWindowRV00 = 0d;
	private double facadeFourWindowRV01 = 0d;
	private double facadeFourWindowRV02 = 0d;
	private double facadeFourWindowRV03 = 0d;
	private double facadeFourWindowRV04 = 0d;
	private double facadeFourWindowRV05 = 0d;
	private double facadeFourWindowRV06 = 0d;
	private double facadeFourWindowRV07 = 0d;
	private double facadeFourWindowRV08 = 0d;
	private double facadeFourWindowRV09 = 0d;
	private double facadeFourWindowRV10 = 0d;
	private double facadeFourWindowRV11 = 0d;
	private double facadeFourWindowRV12 = 0d;
	private double facadeFourWindowRV13 = 0d;
	private double facadeFourWindowRV14 = 0d;
	private double facadeFourWindowRV15 = 0d;	
	
	// Daylight Dashboard - Fa�ade One
	private double facadeOneSurroundingFeaturesAverageHeight = 0d;
	private double facadeOneSurroundingFeaturesAverageDistance = 0d;
	
	// Daylight Dashboard - Fa�ade Two
	private double facadeTwoSurroundingFeaturesAverageHeight = 0d;
	private double facadeTwoSurroundingFeaturesAverageDistance = 0d;
	
	// Daylight Dashboard - Fa�ade Three
	private double facadeThreeSurroundingFeaturesAverageHeight = 0d;
	private double facadeThreeSurroundingFeaturesAverageDistance = 0d;
	
	// Daylight Dashboard - Fa�ade Four
	private double facadeFourSurroundingFeaturesAverageHeight = 0d;
	private double facadeFourSurroundingFeaturesAverageDistance = 0d;
	
	// End variables that need to be persisted to save project //
	
	private Panel panelFacadeOne = new Panel();
	private Panel panelFacadeTwo = new Panel();
	private Panel panelFacadeThree = new Panel();
	private Panel panelFacadeFour = new Panel();
	
	private Panel panelContentDaylightFacadeOne = new Panel();
	private Panel panelContentDaylightFacadeTwo = new Panel();
	private Panel panelContentDaylightFacadeThree = new Panel();
	private Panel panelContentDaylightFacadeFour = new Panel();
	
	// Building Information
	private double internalLength = 0d;
	private double internalWidth = 0d;
	private double internalFloorArea = 0d;
	private double internalCeilingArea = 0d;
	private double internalWallArea = 0d;
	
	// Output Information: Building Totals
	private double facadeOneArea = 0d;
	private double facadeTwoArea = 0d;
	private double facadeThreeArea = 0d;
	private double facadeFourArea = 0d;
	private double totalFacadeArea = 0d;
	private double roofArea = 0d;
	private double groundFloorArea = 0d;
	private double areaOfInternalSurfaces = 0d;
	private double roofAndGroundFloorArea = 0d;
	private double heatLossElementsArea = 0d;
	private double volume = 0d;
	private double volumeDivHeatLossElemArea = 0d;
	private double averageUvalueRoofAndFloor = 0d;

	// Building Location & Orientation
	private Point2D.Double gpsLocation = null;
	private double rotation = 0;
	private String facadeOneOrientation;
	private String facadeTwoOrientation;
	private String facadeThreeOrientation;
	private String facadeFourOrientation;

	// Elemental Thermal Performance
	private double uValueRoofValue = 0d;
	private double uValueGroundFloorValue = 0d;
	private double uValueWallsValue = 0d;
	private double uValueGlazingValue = 0d;

	// Glazing Information
	private double percentageWall = 0d;
	private double maxPercentageGlazing = 0d;
	private double percentageGlazingValue = 0d;
	private String glazingWallRatio;
	private double totalGlazedArea = 0d;
	private double totalGlazedAreaDistributed = 0d;
	
	// Glazing Distribution
	private double facadeOnePercentageTotalGlazedArea = 0d;
	private double facadeOneGlazedArea = 0d;
	private double facadeOneGlazedPercentageValue = 0d;
	
	private double facadeTwoPercentageTotalGlazedArea = 0d;
	private double facadeTwoGlazedArea = 0d;
	private double facadeTwoGlazedPercentageValue = 0d;
	
	private double facadeThreePercentageTotalGlazedArea = 0d;
	private double facadeThreeGlazedArea = 0d;
	private double facadeThreeGlazedPercentageValue = 0d;
	
	private double facadeFourPercentageTotalGlazedArea = 0d;
	private double facadeFourGlazedArea = 0d;
	private double facadeFourGlazedPercentageValue = 0d;
	
	// Window Shading Config
	// these allow setting to multiple facades
	private double windowPercentageFrame = 0d;
	private String windowGlazing;
	private String windowShadingType;
	private String windowConfig;
	private double windowDepth = 0d;
	private String shadingAngle;
	private double shadingAngleVal = 0d;
	private String louvreColour;
	private String slatAngle;
	private double slatAngleVal = 0d;
	private double windowSolarTransmittance = 0d;
	private double windowRatio = 0d;
	private double shadingFactor = 0d;
	
	private String facadeOneWindowGlazing;
	private String facadeTwoWindowGlazing;
	private String facadeThreeWindowGlazing;
	private String facadeFourWindowGlazing;
	
	private double facadeOneShadingAngleVal = 0d;
	private double facadeTwoShadingAngleVal = 0d;
	private double facadeThreeShadingAngleVal = 0d;
	private double facadeFourShadingAngleVal = 0d;
	
	private double facadeOneSlatAngleVal = 0d;
	private double facadeTwoSlatAngleVal = 0d;
	private double facadeThreeSlatAngleVal = 0d;
	private double facadeFourSlatAngleVal = 0d;
	
	private double facadeOneWindowSolarTransmittance = 0d;
	private double facadeTwoWindowSolarTransmittance = 0d;
	private double facadeThreeWindowSolarTransmittance = 0d;
	private double facadeFourWindowSolarTransmittance = 0d;
	
	private double facadeOneWindowRatio = 0d;
	private double facadeTwoWindowRatio = 0d;
	private double facadeThreeWindowRatio = 0d;
	private double facadeFourWindowRatio = 0d;
	
	private boolean applyToFacadeOne = true;
	private boolean applyToFacadeTwo = true;
	private boolean applyToFacadeThree = true;
	private boolean applyToFacadeFour = true;
	
	// Solar Shading
	private double facadeOneAverageSolarLoad = 0d;
	private double facadeTwoAverageSolarLoad = 0d;
	private double facadeThreeAverageSolarLoad = 0d;
	private double facadeFourAverageSolarLoad = 0d;
	
	private double facadeOneSolarTransmittance = 0d;
	private double facadeOneSolarTransmittanceRO = 0d;
	private double facadeTwoSolarTransmittance = 0d;
	private double facadeTwoSolarTransmittanceRO = 0d;
	private double facadeThreeSolarTransmittance = 0d;
	private double facadeThreeSolarTransmittanceRO = 0d;
	private double facadeFourSolarTransmittance = 0d;
	private double facadeFourSolarTransmittanceRO = 0d;
	
	private double facadeOneShadingFactor = 0d;
	private double facadeOneShadingFactorRO = 0d;
	private double facadeTwoShadingFactor = 0d;
	private double facadeTwoShadingFactorRO = 0d;
	private double facadeThreeShadingFactor = 0d;
	private double facadeThreeShadingFactorRO = 0d;
	private double facadeFourShadingFactor = 0d;
	private double facadeFourShadingFactorRO = 0d;

	// Max Average U-values
	private double maxAverageUvalueTotal = 0d;
	private double maxAverageUvalueFacade = 0d;
	
	private Double facadePerformanceValue = 0d;

	// Average Daily Solar Load per Floor
	private double facadeOneAvgDailySolarLoadPerFloor = 0d;
	private double facadeTwoAvgDailySolarLoadPerFloor = 0d;
	
	private double facadeThreeAvgDailySolarLoadPerFloor = 0d;
	private double facadeFourAvgDailySolarLoadPerFloor = 0d;
	
	private double facadeOneAvgDailySolarLoadPerFloorValue = 0d;
	private double facadeTwoAvgDailySolarLoadPerFloorValue = 0d;
	
	private double facadeThreeAvgDailySolarLoadPerFloorValue = 0d;
	private double facadeFourAvgDailySolarLoadPerFloorValue = 0d;
	
	private double averageDailySolarLoadPerFloorTotal = 0d;

	// Output Information: Typical Floor
	private double facadeOneTypicalFloorArea = 0d;
	private double facadeOneTypicalFloorGlazedArea = 0d;
	private double facadeOneTypicalFloorPerimeterZoneArea = 0d;
	
	private double facadeTwoTypicalFloorArea = 0d;
	private double facadeTwoTypicalFloorGlazedArea = 0d;
	private double facadeTwoTypicalFloorPerimeterZoneArea = 0d;
	
	private double facadeThreeTypicalFloorArea = 0d;
	private double facadeThreeTypicalFloorGlazedArea = 0d;
	private double facadeThreeTypicalFloorPerimeterZoneArea = 0d;
	
	private double facadeFourTypicalFloorArea = 0d;
	private double facadeFourTypicalFloorGlazedArea = 0d;
	private double facadeFourTypicalFloorPerimeterZoneArea = 0d;

	// Old Daylighting Inputs
	private String diffuseTransmittanceText;
	private double diffuseTransmittanceValue = 0d;
	private double averageReflectanceOfInteriorSurfacesValue = 0d;
	
	// New Daylighting Inputs
	private double maintenanceFactorValue = 0d;
	
	private String facadeOneDiffuseTransmittanceText;
	private double facadeOneDiffuseTransmittanceValue = 1.0d;
	private String facadeOneAverageReflectanceOfInteriorSurfacesText;
	private double facadeOneAverageReflectanceOfInteriorSurfacesValue = 0d;
	
	private String facadeTwoDiffuseTransmittanceText;
	private double facadeTwoDiffuseTransmittanceValue = 1.0d;
	private String facadeTwoAverageReflectanceOfInteriorSurfacesText;
	private double facadeTwoAverageReflectanceOfInteriorSurfacesValue = 0d;

	private String facadeThreeDiffuseTransmittanceText;
	private double facadeThreeDiffuseTransmittanceValue = 1.0d;
	private String facadeThreeAverageReflectanceOfInteriorSurfacesText;
	private double facadeThreeAverageReflectanceOfInteriorSurfacesValue = 0d;

	private String facadeFourDiffuseTransmittanceText;
	private double facadeFourDiffuseTransmittanceValue = 1.0d;
	private String facadeFourAverageReflectanceOfInteriorSurfacesText;
	private double facadeFourAverageReflectanceOfInteriorSurfacesValue = 0d;

	// Old Window Information
//	private double groundFloorHeadHeight = 2.25d; // need to keep for shading 
//	private double groundFloorCillHeight = 1.10d;
//	private double groundFloorReveal = 0d;
//	private double firstFloorHeadHeight = 0d;
//	private double firstFloorCillHeight = 0d;
//	private double firstFloorReveal = 0d;
//	private double secondFloorHeadHeight = 0d;
//	private double secondFloorCillHeight = 0d;
//	private double secondFloorReveal = 0d;
	
	// New Window Information
	private double[] facadeOneWindowHH = new double[maxStoreys];
	private double[] facadeOneWindowCH = new double[maxStoreys];
	private double[] facadeOneWindowRV = new double[maxStoreys];
	
	private double[] facadeTwoWindowHH = new double[maxStoreys];
	private double[] facadeTwoWindowCH = new double[maxStoreys];
	private double[] facadeTwoWindowRV = new double[maxStoreys];
	
	private double[] facadeThreeWindowHH = new double[maxStoreys];
	private double[] facadeThreeWindowCH = new double[maxStoreys];
	private double[] facadeThreeWindowRV = new double[maxStoreys];
	
	private double[] facadeFourWindowHH = new double[maxStoreys];
	private double[] facadeFourWindowCH = new double[maxStoreys];
	private double[] facadeFourWindowRV = new double[maxStoreys];
	
	// Old Vertical Angle of Sky
//	private double groundFloorAngleX = 0d;
//	private double groundFloorAngleY = 0d;
//	private double groundFloorAngleZ = 0d;
//	private double firstFloorAngleX = 0d;
//	private double firstFloorAngleY = 0d;
//	private double firstFloorAngleZ = 0d;
//	private double secondFloorAngleX = 0d;
//	private double secondFloorAngleY = 0d;
//	private double secondFloorAngleZ = 0d;
	
	// New Vertical Angle of Sky

	private double[][] facadeOneVertAngleX = new double[maxStoreys][1];
	private double[][] facadeOneVertAngleY = new double[maxStoreys][1];
	private double[][] facadeOneVertAngleZ = new double[maxStoreys][1];
	
	private double[][] facadeTwoVertAngleX = new double[maxStoreys][1];
	private double[][] facadeTwoVertAngleY = new double[maxStoreys][1];
	private double[][] facadeTwoVertAngleZ = new double[maxStoreys][1];
	
	private double[][] facadeThreeVertAngleX = new double[maxStoreys][1];
	private double[][] facadeThreeVertAngleY = new double[maxStoreys][1];
	private double[][] facadeThreeVertAngleZ = new double[maxStoreys][1];
	
	private double[][] facadeFourVertAngleX = new double[maxStoreys][1];
	private double[][] facadeFourVertAngleY = new double[maxStoreys][1];
	private double[][] facadeFourVertAngleZ = new double[maxStoreys][1];
		
	// Old Design Daylighting Factor
	//private double averageGroundFloorDesignDaylightFactor = 0d;
	//private double averageFirstFloorDesignDaylightFactor = 0d;
	//private double averageSecondFloorDesignDaylightFactor = 0d;
	
	// New Design Daylighting Factor

	private double[][] facadeOneAverageDesignDaylightFactor = new double[maxStoreys][1];
	private double[][] facadeTwoAverageDesignDaylightFactor = new double[maxStoreys][1];
	private double[][] facadeThreeAverageDesignDaylightFactor = new double[maxStoreys][1];
	private double[][] facadeFourAverageDesignDaylightFactor = new double[maxStoreys][1];
	
	// Constants
	private final double extentOfPerimeterZone = 6d;
	private final double facadeExcellence = 0.39d;
	private final double canopyOverhangHorizontalDepth = 0.5d; // Note: This value affects angle X
	
	// Settings
	private int unlockedFacades = 0;
	private boolean checkLock = false; // to prevent checkGlazingDistribution() form calling itself recursively
	private boolean distribLock = false;
	
	private FenestraProApplication app;
	
	private ProjectBean projectInstance;
	
	public Project() {}
	
	public Project(FenestraProApplication app) {
		this.setApp(app);
	}
	
	public Project(ProjectBean projectInstance) {
		this.projectInstance = projectInstance;
	}
	
	public Project(ProjectBean projectInstance, FenestraProApplication app) {
		this.projectInstance = projectInstance;
		this.setApp(app);
	}

	public void loadPersistedValues() {
		this.projName = projectInstance.getProjName();
		this.updateProjectTabName();
		this.projDescription = projectInstance.getProjDescription();
		this.projNumber = projectInstance.getProjNumber();
		this.facadeType = projectInstance.getFacadeType();
		this.buildingType = projectInstance.getBuildingType();
		this.locationSetting = projectInstance.getLocationSetting();
		this.latitude = projectInstance.getLatitude();
		this.longitude = projectInstance.getLongitude();
		this.length = projectInstance.getLength();
		this.width = projectInstance.getWidth();
		this.storeys = projectInstance.getStoreys();
		this.overallBuildingHeight = projectInstance.getOverallBuildingHeight();
		this.floorToFloor = projectInstance.getFloorToFloor();
		this.floorToCeiling = projectInstance.getFloorToCeiling();
		this.orientation = projectInstance.getOrientation();
		this.facadePerformance = projectInstance.getFacadePerformance();
		this.uValueRoof = projectInstance.getuValueRoof();
		this.uValueGroundFloor = projectInstance.getuValueGroundFloor();
		this.uValueWalls = projectInstance.getuValueWalls();
		this.uValueGlazing = projectInstance.getuValueGlazing();
		this.percentageGlazing = projectInstance.getPercentageGlazing();
		this.facadeOneGlazedPercentage = projectInstance.getFacadeGlazedPercentage(0);
		this.facadeOneGlazedAreaLock = projectInstance.getFacadeGlazedAreaLock(0);
		this.facadeOneGlazingType = projectInstance.getFacadeGlazingType(0);
		this.facadeOneGlazingSpec = projectInstance.getFacadeGlazingSpec(0);
		this.facadeOnePercentageFrame = projectInstance.getFacadePercentageFrame(0);
		this.facadeOneWindowShadingType = projectInstance.getFacadeWindowShadingType(0);
		this.facadeOneWindowConfig = projectInstance.getFacadeWindowConfig(0);
		this.facadeOneWindowShadingDepth = projectInstance.getFacadeWindowShadingDepth(0);
		this.facadeOneShadingAngle = projectInstance.getFacadeShadingAngle(0);
		this.facadeOneLouvreColour = projectInstance.getFacadeLouvreColour(0);
		this.facadeOneSlatAngle = projectInstance.getFacadeSlatAngle(0);
		this.facadeTwoGlazedPercentage = projectInstance.getFacadeGlazedPercentage(1);
		this.facadeTwoGlazedAreaLock = projectInstance.getFacadeGlazedAreaLock(1);
		this.facadeTwoGlazingType = projectInstance.getFacadeGlazingType(1);
		this.facadeTwoGlazingSpec = projectInstance.getFacadeGlazingSpec(1);
		this.facadeTwoPercentageFrame = projectInstance.getFacadePercentageFrame(1);
		this.facadeTwoWindowShadingType = projectInstance.getFacadeWindowShadingType(1);
		this.facadeTwoWindowConfig = projectInstance.getFacadeWindowConfig(1);
		this.facadeTwoWindowShadingDepth = projectInstance.getFacadeWindowShadingDepth(1);
		this.facadeTwoShadingAngle = projectInstance.getFacadeShadingAngle(1);
		this.facadeTwoLouvreColour = projectInstance.getFacadeLouvreColour(1);
		this.facadeTwoSlatAngle = projectInstance.getFacadeSlatAngle(1);
		this.facadeThreeGlazedPercentage = projectInstance.getFacadeGlazedPercentage(2);
		this.facadeThreeGlazedAreaLock = projectInstance.getFacadeGlazedAreaLock(2);
		this.facadeThreeGlazingType = projectInstance.getFacadeGlazingType(2);
		this.facadeThreeGlazingSpec = projectInstance.getFacadeGlazingSpec(2);
		this.facadeThreePercentageFrame = projectInstance.getFacadePercentageFrame(2);
		this.facadeThreeWindowShadingType = projectInstance.getFacadeWindowShadingType(2);
		this.facadeThreeWindowConfig = projectInstance.getFacadeWindowConfig(2);
		this.facadeThreeWindowShadingDepth = projectInstance.getFacadeWindowShadingDepth(2);
		this.facadeThreeShadingAngle = projectInstance.getFacadeShadingAngle(2);
		this.facadeThreeLouvreColour = projectInstance.getFacadeLouvreColour(2);
		this.facadeThreeSlatAngle = projectInstance.getFacadeSlatAngle(2);
		this.facadeFourGlazedPercentage = projectInstance.getFacadeGlazedPercentage(3);
		this.facadeFourGlazedAreaLock = projectInstance.getFacadeGlazedAreaLock(3);
		this.facadeFourGlazingType = projectInstance.getFacadeGlazingType(3);
		this.facadeFourGlazingSpec = projectInstance.getFacadeGlazingSpec(3);
		this.facadeFourPercentageFrame = projectInstance.getFacadePercentageFrame(3);
		this.facadeFourWindowShadingType = projectInstance.getFacadeWindowShadingType(3);
		this.facadeFourWindowConfig = projectInstance.getFacadeWindowConfig(3);
		this.facadeFourWindowShadingDepth = projectInstance.getFacadeWindowShadingDepth(3);
		this.facadeFourShadingAngle = projectInstance.getFacadeShadingAngle(3);
		this.facadeFourLouvreColour = projectInstance.getFacadeLouvreColour(3);
		this.facadeFourSlatAngle = projectInstance.getFacadeSlatAngle(3);
		this.wallThickness = projectInstance.getWallThickness();
		this.averageReflectanceOfInteriorSurfacesText = projectInstance.getAverageReflectanceOfInteriorSurfacesText();
		
		this.facadeOneWindowHH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][0][0];
		this.facadeOneWindowHH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][1][0];
		this.facadeOneWindowHH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][2][0];
		this.facadeOneWindowHH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][3][0];
		this.facadeOneWindowHH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][4][0];
		this.facadeOneWindowHH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][5][0];
		this.facadeOneWindowHH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][6][0];
		this.facadeOneWindowHH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][7][0];
		this.facadeOneWindowHH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][8][0];
		this.facadeOneWindowHH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][9][0];
		this.facadeOneWindowHH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][10][0];
		this.facadeOneWindowHH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][11][0];
		this.facadeOneWindowHH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][12][0];
		this.facadeOneWindowHH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][13][0];
		this.facadeOneWindowHH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][14][0];
		this.facadeOneWindowHH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][15][0];
		this.facadeOneWindowCH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][0][1];
		this.facadeOneWindowCH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][1][1];
		this.facadeOneWindowCH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][2][1];
		this.facadeOneWindowCH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][3][1];
		this.facadeOneWindowCH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][4][1];
		this.facadeOneWindowCH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][5][1];
		this.facadeOneWindowCH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][6][1];
		this.facadeOneWindowCH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][7][1];
		this.facadeOneWindowCH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][8][1];
		this.facadeOneWindowCH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][9][1];
		this.facadeOneWindowCH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][10][1];
		this.facadeOneWindowCH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][11][1];
		this.facadeOneWindowCH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][12][1];
		this.facadeOneWindowCH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][13][1];
		this.facadeOneWindowCH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][14][1];
		this.facadeOneWindowCH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][15][1];
		this.facadeOneWindowRV00 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][0][2];
		this.facadeOneWindowRV01 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][1][2];
		this.facadeOneWindowRV02 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][2][2];
		this.facadeOneWindowRV03 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][3][2];
		this.facadeOneWindowRV04 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][4][2];
		this.facadeOneWindowRV05 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][5][2];
		this.facadeOneWindowRV06 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][6][2];
		this.facadeOneWindowRV07 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][7][2];
		this.facadeOneWindowRV08 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][8][2];
		this.facadeOneWindowRV09 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][9][2];
		this.facadeOneWindowRV10 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][10][2];
		this.facadeOneWindowRV11 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][11][2];
		this.facadeOneWindowRV12 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][12][2];
		this.facadeOneWindowRV13 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][13][2];
		this.facadeOneWindowRV14 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][14][2];
		this.facadeOneWindowRV15 = projectInstance.getFacadeWindowHeadCillRevealArray()[0][15][2];

		this.facadeTwoWindowHH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][0][0];
		this.facadeTwoWindowHH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][1][0];
		this.facadeTwoWindowHH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][2][0];
		this.facadeTwoWindowHH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][3][0];
		this.facadeTwoWindowHH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][4][0];
		this.facadeTwoWindowHH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][5][0];
		this.facadeTwoWindowHH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][6][0];
		this.facadeTwoWindowHH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][7][0];
		this.facadeTwoWindowHH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][8][0];
		this.facadeTwoWindowHH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][9][0];
		this.facadeTwoWindowHH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][10][0];
		this.facadeTwoWindowHH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][11][0];
		this.facadeTwoWindowHH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][12][0];
		this.facadeTwoWindowHH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][13][0];
		this.facadeTwoWindowHH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][14][0];
		this.facadeTwoWindowHH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][15][0];
		this.facadeTwoWindowCH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][0][1];
		this.facadeTwoWindowCH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][1][1];
		this.facadeTwoWindowCH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][2][1];
		this.facadeTwoWindowCH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][3][1];
		this.facadeTwoWindowCH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][4][1];
		this.facadeTwoWindowCH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][5][1];
		this.facadeTwoWindowCH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][6][1];
		this.facadeTwoWindowCH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][7][1];
		this.facadeTwoWindowCH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][8][1];
		this.facadeTwoWindowCH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][9][1];
		this.facadeTwoWindowCH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][10][1];
		this.facadeTwoWindowCH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][11][1];
		this.facadeTwoWindowCH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][12][1];
		this.facadeTwoWindowCH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][13][1];
		this.facadeTwoWindowCH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][14][1];
		this.facadeTwoWindowCH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][15][1];
		this.facadeTwoWindowRV00 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][0][2];
		this.facadeTwoWindowRV01 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][1][2];
		this.facadeTwoWindowRV02 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][2][2];
		this.facadeTwoWindowRV03 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][3][2];
		this.facadeTwoWindowRV04 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][4][2];
		this.facadeTwoWindowRV05 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][5][2];
		this.facadeTwoWindowRV06 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][6][2];
		this.facadeTwoWindowRV07 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][7][2];
		this.facadeTwoWindowRV08 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][8][2];
		this.facadeTwoWindowRV09 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][9][2];
		this.facadeTwoWindowRV10 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][10][2];
		this.facadeTwoWindowRV11 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][11][2];
		this.facadeTwoWindowRV12 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][12][2];
		this.facadeTwoWindowRV13 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][13][2];
		this.facadeTwoWindowRV14 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][14][2];
		this.facadeTwoWindowRV15 = projectInstance.getFacadeWindowHeadCillRevealArray()[1][15][2];
		
		this.facadeThreeWindowHH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][0][0];
		this.facadeThreeWindowHH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][1][0];
		this.facadeThreeWindowHH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][2][0];
		this.facadeThreeWindowHH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][3][0];
		this.facadeThreeWindowHH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][4][0];
		this.facadeThreeWindowHH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][5][0];
		this.facadeThreeWindowHH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][6][0];
		this.facadeThreeWindowHH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][7][0];
		this.facadeThreeWindowHH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][8][0];
		this.facadeThreeWindowHH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][9][0];
		this.facadeThreeWindowHH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][10][0];
		this.facadeThreeWindowHH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][11][0];
		this.facadeThreeWindowHH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][12][0];
		this.facadeThreeWindowHH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][13][0];
		this.facadeThreeWindowHH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][14][0];
		this.facadeThreeWindowHH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][15][0];
		this.facadeThreeWindowCH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][0][1];
		this.facadeThreeWindowCH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][1][1];
		this.facadeThreeWindowCH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][2][1];
		this.facadeThreeWindowCH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][3][1];
		this.facadeThreeWindowCH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][4][1];
		this.facadeThreeWindowCH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][5][1];
		this.facadeThreeWindowCH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][6][1];
		this.facadeThreeWindowCH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][7][1];
		this.facadeThreeWindowCH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][8][1];
		this.facadeThreeWindowCH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][9][1];
		this.facadeThreeWindowCH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][10][1];
		this.facadeThreeWindowCH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][11][1];
		this.facadeThreeWindowCH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][12][1];
		this.facadeThreeWindowCH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][13][1];
		this.facadeThreeWindowCH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][14][1];
		this.facadeThreeWindowCH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][15][1];
		this.facadeThreeWindowRV00 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][0][2];
		this.facadeThreeWindowRV01 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][1][2];
		this.facadeThreeWindowRV02 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][2][2];
		this.facadeThreeWindowRV03 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][3][2];
		this.facadeThreeWindowRV04 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][4][2];
		this.facadeThreeWindowRV05 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][5][2];
		this.facadeThreeWindowRV06 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][6][2];
		this.facadeThreeWindowRV07 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][7][2];
		this.facadeThreeWindowRV08 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][8][2];
		this.facadeThreeWindowRV09 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][9][2];
		this.facadeThreeWindowRV10 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][10][2];
		this.facadeThreeWindowRV11 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][11][2];
		this.facadeThreeWindowRV12 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][12][2];
		this.facadeThreeWindowRV13 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][13][2];
		this.facadeThreeWindowRV14 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][14][2];
		this.facadeThreeWindowRV15 = projectInstance.getFacadeWindowHeadCillRevealArray()[2][15][2];

		this.facadeFourWindowHH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][0][0];
		this.facadeFourWindowHH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][1][0];
		this.facadeFourWindowHH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][2][0];
		this.facadeFourWindowHH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][3][0];
		this.facadeFourWindowHH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][4][0];
		this.facadeFourWindowHH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][5][0];
		this.facadeFourWindowHH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][6][0];
		this.facadeFourWindowHH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][7][0];
		this.facadeFourWindowHH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][8][0];
		this.facadeFourWindowHH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][9][0];
		this.facadeFourWindowHH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][10][0];
		this.facadeFourWindowHH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][11][0];
		this.facadeFourWindowHH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][12][0];
		this.facadeFourWindowHH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][13][0];
		this.facadeFourWindowHH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][14][0];
		this.facadeFourWindowHH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][15][0];
		this.facadeFourWindowCH00 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][0][1];
		this.facadeFourWindowCH01 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][1][1];
		this.facadeFourWindowCH02 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][2][1];
		this.facadeFourWindowCH03 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][3][1];
		this.facadeFourWindowCH04 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][4][1];
		this.facadeFourWindowCH05 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][5][1];
		this.facadeFourWindowCH06 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][6][1];
		this.facadeFourWindowCH07 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][7][1];
		this.facadeFourWindowCH08 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][8][1];
		this.facadeFourWindowCH09 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][9][1];
		this.facadeFourWindowCH10 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][10][1];
		this.facadeFourWindowCH11 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][11][1];
		this.facadeFourWindowCH12 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][12][1];
		this.facadeFourWindowCH13 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][13][1];
		this.facadeFourWindowCH14 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][14][1];
		this.facadeFourWindowCH15 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][15][1];
		this.facadeFourWindowRV00 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][0][2];
		this.facadeFourWindowRV01 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][1][2];
		this.facadeFourWindowRV02 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][2][2];
		this.facadeFourWindowRV03 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][3][2];
		this.facadeFourWindowRV04 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][4][2];
		this.facadeFourWindowRV05 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][5][2];
		this.facadeFourWindowRV06 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][6][2];
		this.facadeFourWindowRV07 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][7][2];
		this.facadeFourWindowRV08 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][8][2];
		this.facadeFourWindowRV09 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][9][2];
		this.facadeFourWindowRV10 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][10][2];
		this.facadeFourWindowRV11 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][11][2];
		this.facadeFourWindowRV12 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][12][2];
		this.facadeFourWindowRV13 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][13][2];
		this.facadeFourWindowRV14 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][14][2];
		this.facadeFourWindowRV15 = projectInstance.getFacadeWindowHeadCillRevealArray()[3][15][2];
		
		this.facadeOneWindowHH = new double[] {facadeOneWindowHH00, facadeOneWindowHH01, facadeOneWindowHH02, facadeOneWindowHH03, facadeOneWindowHH04, facadeOneWindowHH05, facadeOneWindowHH06, facadeOneWindowHH07, facadeOneWindowHH08, facadeOneWindowHH09, facadeOneWindowHH10, facadeOneWindowHH11, facadeOneWindowHH12, facadeOneWindowHH13, facadeOneWindowHH14, facadeOneWindowHH15 };
		this.facadeOneWindowCH = new double[] {facadeOneWindowCH00, facadeOneWindowCH01, facadeOneWindowCH02, facadeOneWindowCH03, facadeOneWindowCH04, facadeOneWindowCH05, facadeOneWindowCH06, facadeOneWindowCH07, facadeOneWindowCH08, facadeOneWindowCH09, facadeOneWindowCH10, facadeOneWindowCH11, facadeOneWindowCH12, facadeOneWindowCH13, facadeOneWindowCH14, facadeOneWindowCH15 };
		this.facadeOneWindowRV = new double[] {facadeOneWindowRV00, facadeOneWindowRV01, facadeOneWindowRV02, facadeOneWindowRV03, facadeOneWindowRV04, facadeOneWindowRV05, facadeOneWindowRV06, facadeOneWindowRV07, facadeOneWindowRV08, facadeOneWindowRV09, facadeOneWindowRV10, facadeOneWindowRV11, facadeOneWindowRV12, facadeOneWindowRV13, facadeOneWindowRV14, facadeOneWindowRV15 };
		this.facadeTwoWindowHH = new double[] {facadeTwoWindowHH00, facadeTwoWindowHH01, facadeTwoWindowHH02, facadeTwoWindowHH03, facadeTwoWindowHH04, facadeTwoWindowHH05, facadeTwoWindowHH06, facadeTwoWindowHH07, facadeTwoWindowHH08, facadeTwoWindowHH09, facadeTwoWindowHH10, facadeTwoWindowHH11, facadeTwoWindowHH12, facadeTwoWindowHH13, facadeTwoWindowHH14, facadeTwoWindowHH15 };
		this.facadeTwoWindowCH = new double[] {facadeTwoWindowCH00, facadeTwoWindowCH01, facadeTwoWindowCH02, facadeTwoWindowCH03, facadeTwoWindowCH04, facadeTwoWindowCH05, facadeTwoWindowCH06, facadeTwoWindowCH07, facadeTwoWindowCH08, facadeTwoWindowCH09, facadeTwoWindowCH10, facadeTwoWindowCH11, facadeTwoWindowCH12, facadeTwoWindowCH13, facadeTwoWindowCH14, facadeTwoWindowCH15 };
		this.facadeTwoWindowRV = new double[] {facadeTwoWindowRV00, facadeTwoWindowRV01, facadeTwoWindowRV02, facadeTwoWindowRV03, facadeTwoWindowRV04, facadeTwoWindowRV05, facadeTwoWindowRV06, facadeTwoWindowRV07, facadeTwoWindowRV08, facadeTwoWindowRV09, facadeTwoWindowRV10, facadeTwoWindowRV11, facadeTwoWindowRV12, facadeTwoWindowRV13, facadeTwoWindowRV14, facadeTwoWindowRV15 };
		this.facadeThreeWindowHH = new double[] {facadeThreeWindowHH00, facadeThreeWindowHH01, facadeThreeWindowHH02, facadeThreeWindowHH03, facadeThreeWindowHH04, facadeThreeWindowHH05, facadeThreeWindowHH06, facadeThreeWindowHH07, facadeThreeWindowHH08, facadeThreeWindowHH09, facadeThreeWindowHH10, facadeThreeWindowHH11, facadeThreeWindowHH12, facadeThreeWindowHH13, facadeThreeWindowHH14, facadeThreeWindowHH15 };
		this.facadeThreeWindowCH = new double[] {facadeThreeWindowCH00, facadeThreeWindowCH01, facadeThreeWindowCH02, facadeThreeWindowCH03, facadeThreeWindowCH04, facadeThreeWindowCH05, facadeThreeWindowCH06, facadeThreeWindowCH07, facadeThreeWindowCH08, facadeThreeWindowCH09, facadeThreeWindowCH10, facadeThreeWindowCH11, facadeThreeWindowCH12, facadeThreeWindowCH13, facadeThreeWindowCH14, facadeThreeWindowCH15 };
		this.facadeThreeWindowRV = new double[] {facadeThreeWindowRV00, facadeThreeWindowRV01, facadeThreeWindowRV02, facadeThreeWindowRV03, facadeThreeWindowRV04, facadeThreeWindowRV05, facadeThreeWindowRV06, facadeThreeWindowRV07, facadeThreeWindowRV08, facadeThreeWindowRV09, facadeThreeWindowRV10, facadeThreeWindowRV11, facadeThreeWindowRV12, facadeThreeWindowRV13, facadeThreeWindowRV14, facadeThreeWindowRV15 };
		this.facadeFourWindowHH = new double[] {facadeFourWindowHH00, facadeFourWindowHH01, facadeFourWindowHH02, facadeFourWindowHH03, facadeFourWindowHH04, facadeFourWindowHH05, facadeFourWindowHH06, facadeFourWindowHH07, facadeFourWindowHH08, facadeFourWindowHH09, facadeFourWindowHH10, facadeFourWindowHH11, facadeFourWindowHH12, facadeFourWindowHH13, facadeFourWindowHH14, facadeFourWindowHH15 };
		this.facadeFourWindowCH = new double[] {facadeFourWindowCH00, facadeFourWindowCH01, facadeFourWindowCH02, facadeFourWindowCH03, facadeFourWindowCH04, facadeFourWindowCH05, facadeFourWindowCH06, facadeFourWindowCH07, facadeFourWindowCH08, facadeFourWindowCH09, facadeFourWindowCH10, facadeFourWindowCH11, facadeFourWindowCH12, facadeFourWindowCH13, facadeFourWindowCH14, facadeFourWindowCH15 };
		this.facadeFourWindowRV = new double[] {facadeFourWindowRV00, facadeFourWindowRV01, facadeFourWindowRV02, facadeFourWindowRV03, facadeFourWindowRV04, facadeFourWindowRV05, facadeFourWindowRV06, facadeFourWindowRV07, facadeFourWindowRV08, facadeFourWindowRV09, facadeFourWindowRV10, facadeFourWindowRV11, facadeFourWindowRV12, facadeFourWindowRV13, facadeFourWindowRV14, facadeFourWindowRV15 };
		
		this.facadeOneSurroundingFeaturesAverageHeight = projectInstance.getSurroundingFeaturesAverageHeight(0);
		this.facadeOneSurroundingFeaturesAverageDistance = projectInstance.getSurroundingFeaturesAverageDistance(0);
		this.facadeTwoSurroundingFeaturesAverageHeight = projectInstance.getSurroundingFeaturesAverageHeight(1);
		this.facadeTwoSurroundingFeaturesAverageDistance = projectInstance.getSurroundingFeaturesAverageDistance(1);
		this.facadeThreeSurroundingFeaturesAverageHeight = projectInstance.getSurroundingFeaturesAverageHeight(2);
		this.facadeThreeSurroundingFeaturesAverageDistance = projectInstance.getSurroundingFeaturesAverageDistance(2);
		this.facadeFourSurroundingFeaturesAverageHeight = projectInstance.getSurroundingFeaturesAverageHeight(3);
		this.facadeFourSurroundingFeaturesAverageDistance = projectInstance.getSurroundingFeaturesAverageDistance(3);
	}
	
	public FenestraProApplication getApp() {
		return app;
	}

	public void setApp(FenestraProApplication app) {
		this.app = app;
	}

	/**
	 * @return the projName
	 */
	public String getProjName() {
		return projName;
	}

	/**
	 * @param projName the projName to set
	 */
	public void setProjName(String projName) {
		this.projName = projName;
		this.updateProjectTabName();
		notifier.fireValueChange("projName");
		if (saveValues) {this.projectInstance.setProjName(projName);}
	}

	/**
	 * @return the projDescription
	 */
	public String getProjDescription() {
		return projDescription;
	}

	/**
	 * @param projDescription the projDescription to set
	 */
	public void setProjDescription(String projDescription) {
		this.projDescription = projDescription;
		notifier.fireValueChange("projDescription");
		if (saveValues) {this.projectInstance.setProjDescription(projDescription);}
	}

	/**
	 * @return the projNumber
	 */
	public String getProjNumber() {
		return projNumber;
	}

	/**
	 * @param projNumber the projNumber to set
	 */
	public void setProjNumber(String projNumber) {
		this.projNumber = projNumber;
		notifier.fireValueChange("projNumber");
		if (saveValues) {this.projectInstance.setProjNumber(projNumber);}
	}

	/**
	 * @return the notifier
	 */
	public Notifier notifier() {
		return notifier;
	}

	/**
	 * @return the canvas
	 */
	public Canvas canvas() {
		return canvas;
	}

	/**
	 * @return the chart
	 */
	public InvientCharts getHeatGainChart() {
		return heatGainChart;
	}

	/**
	 * @param chart the chart to set
	 */
	public void setHeatGainChart(InvientCharts chart) {
		this.heatGainChart = chart;
	}
	
	/**
	 * @return the chart
	 */
	public InvientCharts getGlazingChart() {
		return glazingChart;
	}

	/**
	 * @param chart the chart to set
	 */
	public void setGlazingChart(InvientCharts chart) {
		this.glazingChart = chart;
	}

	/**
	 * @return the chart
	 */
	public InvientCharts getDaylightingChart() {
		return daylightingChart;
	}

	/**
	 * @param chart the chart to set
	 */
	public void setDaylightingChart(InvientCharts chart) {
		this.daylightingChart = chart;
	}
	
	/**
	 * @return the rotation
	 */
	public double getRotation() {
		return rotation;
	}

	/**
	 * @param rotation the rotation to set
	 */
	public void setRotation(double rotation) {
		this.rotation = rotation;
		this.updateCanvas();
		notifier.fireValueChange("rotation");
	}

	/**
	 * @return the facade excellence
	 */
	public double getFacadeExcellence() {
		return facadeExcellence;
	}

	/**
	 * redraw the canvas
	 */
	private void updateCanvas() {
		double scaleW = length / width;
		double scaleL = width / length;
		double startX = 0.0d;
		double startY = 0.0d;
		double w = 0.0d;
		double h = 0.0d;
		canvas.saveContext();
		canvas.clear();
		if (length > width) {
			startX = -120 + (240 - (160 * scaleL)) / 2;
			startY = -120 + 40;
			w = 160 * scaleL;
			h = 160;
		} else {
			startX = -120 + 40;
			startY = -120 + (240 - (160 * scaleW)) / 2;
			w = 160;
			h = 160 * scaleW;
		}
		canvas.translate(150,150);
		canvas.rotate(Math.toRadians(rotation));
		canvas.beginPath();
		canvas.moveTo(startX, startY);
		canvas.lineTo(startX + w, startY);
		canvas.lineTo(startX + w, startY + h);
		canvas.lineTo(startX, startY + h);
		canvas.closePath();
		canvas.fill();
		canvas.stroke();
		canvas.restoreContext();
	}

	/**
	 * create the canvas
	 */
	private Canvas createCanvas() {
		Canvas canvas = new Canvas();
		canvas.setWidth("300px");
		canvas.setHeight("300px");
		canvas.setColorStrokeStyle("#b6b6b6");
		canvas.setFillStyle("#0093b2");
		canvas.setBackgroundColor("#a0dfed");
		return canvas;
	}	
	
	private InvientCharts createHeatGainChart() {
        heatGainChartConfig.getGeneralChartConfig().setType(SeriesType.BAR);
        heatGainChartConfig.getTitle().setText("");
        
        heatGainXAxis.setCategories(Arrays.asList("North", "East", "South", "West"));
        heatGainXAxesSet.add(heatGainXAxis);
        
        heatGainChartConfig.setXAxes(heatGainXAxesSet);
        
        heatGainYAxis.setMin(0.0);
        heatGainYAxis.setMax(50.0);
        heatGainYAxis.setTitle(new AxisTitle("Average Daily Solar Load per Unit Floor Area " + UNIT_wm2));
        heatGainYAxis.getTitle().setAlign(AxisTitleAlign.HIGH);
        heatGainYAxesSet.add(heatGainYAxis);
        
        BarConfig barCfg = new BarConfig();
        barCfg.setDataLabel(new DataLabel());
        heatGainChartConfig.addSeriesConfig(barCfg);
        
        heatGainChartConfig.setYAxes(heatGainYAxesSet);

        heatGainChartConfig.getTooltip().setFormatterJsFunc("function() {"
                                + " return '' + this.series.name +': '+ this.y + ''; "
                                + "}");
        
        heatGainChartConfig.getCredit().setEnabled(false);
        heatGainChartConfig.getLegend().setEnabled(false);
        
        InvientCharts chart = new InvientCharts(heatGainChartConfig);

		return chart;
	}
	
	public void updateHeatGainChartData() {
		double one, two, three, four;
		one = this.getFacadeOneAvgDailySolarLoadPerFloorValue();
		two = this.getFacadeTwoAvgDailySolarLoadPerFloorValue();
		three = this.getFacadeThreeAvgDailySolarLoadPerFloorValue();
		four = this.getFacadeFourAvgDailySolarLoadPerFloorValue();
        
		XYSeries seriesData = new XYSeries("Average Daily Solar Load");
		LinkedHashSet<DecimalPoint> points = new LinkedHashSet<DecimalPoint>();
		
		points.add(new DecimalPoint(seriesData, one, getPointColor(one)));
		points.add(new DecimalPoint(seriesData, two, getPointColor(two)));
		points.add(new DecimalPoint(seriesData, three, getPointColor(three)));
		points.add(new DecimalPoint(seriesData, four, getPointColor(four)));

		seriesData.setSeriesPoints(points);
		
		heatGainChart.addSeries(seriesData);
	}
	
	public PointConfig getPointColor(double val) {
		Color green = new Color.RGB(137, 165, 78);
		Color red = new Color.RGB(170, 70, 67);
		Color blue = new Color.RGB(69, 114, 167);
		PointConfig pointGreen = new PointConfig(green);
		PointConfig pointRed = new PointConfig(red);
		PointConfig pointBlue = new PointConfig(blue);
		if (val > 25)
			return pointRed;
		if (val > 15)
			return pointGreen;
		return pointBlue;
	}
	
	public void setHeatGainSeriesData() {
		heatGainChart.removeSeries("Average Daily Solar Load");
		this.updateHeatGainChartData();
		this.checkHeatGainYAxisMax();
        heatGainChart.setSizeUndefined();
        heatGainChart.requestRepaint();
        heatGainChart.setSizeFull();
	}
	
	public void checkHeatGainYAxisMax() {
		heatGainYAxis.setMax(50d);
		if (this.getFacadeOneAvgDailySolarLoadPerFloorValue() > 100 ||
				this.getFacadeTwoAvgDailySolarLoadPerFloorValue() > 100 ||
				this.getFacadeThreeAvgDailySolarLoadPerFloorValue() > 100 ||
				this.getFacadeFourAvgDailySolarLoadPerFloorValue() > 100) {
			heatGainYAxis.setMax(150d);
			return;
		}
		if (this.getFacadeOneAvgDailySolarLoadPerFloorValue() > 80 ||
				this.getFacadeTwoAvgDailySolarLoadPerFloorValue() > 80 ||
				this.getFacadeThreeAvgDailySolarLoadPerFloorValue() > 80 ||
				this.getFacadeFourAvgDailySolarLoadPerFloorValue() > 80) {
			heatGainYAxis.setMax(100d);
			return;
		}
		if (this.getFacadeOneAvgDailySolarLoadPerFloorValue() > 60 ||
				this.getFacadeTwoAvgDailySolarLoadPerFloorValue() > 60 ||
				this.getFacadeThreeAvgDailySolarLoadPerFloorValue() > 60 ||
				this.getFacadeFourAvgDailySolarLoadPerFloorValue() > 60) {
			heatGainYAxis.setMax(80d);
			return;
		}
		if (this.getFacadeOneAvgDailySolarLoadPerFloorValue() > 50 ||
				this.getFacadeTwoAvgDailySolarLoadPerFloorValue() > 50 ||
				this.getFacadeThreeAvgDailySolarLoadPerFloorValue() > 50 ||
				this.getFacadeFourAvgDailySolarLoadPerFloorValue() > 50) {
			heatGainYAxis.setMax(60d);
			return;
		}
	}
	
    public CategoryAxis getHeatGainXAxis() {
		return heatGainXAxis;
	}

	public void setHeatGainXAxis() {
		if (this.getFacadeOneOrientation() != null && this.getFacadeTwoOrientation() != null && this.getFacadeThreeOrientation() != null && this.getFacadeFourOrientation() != null) {
			heatGainXAxis.setCategories(Arrays.asList(this.getFacadeOneOrientation(), 
					this.getFacadeTwoOrientation(),
					this.getFacadeThreeOrientation(),
					this.getFacadeFourOrientation()));
		}
        heatGainChart.setSizeUndefined();
        heatGainChart.requestRepaint();
        heatGainChart.setSizeFull();
        notifier.fireValueChange("heatGainXAxis");
        this.updateHeatGainChartData();
	}

	private InvientCharts createGlazingChart() {
		
        glazingChartConfig.getGeneralChartConfig().setType(SeriesType.COLUMN);
        glazingChartConfig.getTitle().setText("");
        //glazingChartConfig.getTitle().setMargin(28);
        
        glazingXAxis.setCategories(Arrays.asList("North", "East", "South", "West"));
        glazingXAxesSet.add(glazingXAxis);
        glazingChartConfig.setXAxes(glazingXAxesSet);
        
        glazingYAxis.setMin(0.0);
        glazingYAxis.setMax(100.0);
        glazingYAxis.setTitle(new AxisTitle("Glazing to Wall Ratio (%)"));
        glazingYAxesSet.add(glazingYAxis);
        glazingChartConfig.setYAxes(glazingYAxesSet);
        
        ColumnConfig series = new ColumnConfig();
        series.setStacking(Stacking.NORMAL);
        series.setDataLabel(new DataLabel());
        glazingChartConfig.addSeriesConfig(series);
        
        glazingChartConfig.getTooltip().setFormatterJsFunc("function() {"
                                + " return '' + this.series.name +': '+ this.y + '%'; "
                                + "}");
        
        glazingChartConfig.getCredit().setEnabled(false);
        glazingChartConfig.getLegend().setEnabled(false);
        
        InvientCharts chart = new InvientCharts(glazingChartConfig);
        
		return chart;
	}
	
	public PointConfig getGlassColor(double val) {
		int r = 95 + (int) (130 * val);
		int gb = 180 + (int) (75 * val);
		Color blue = new Color.RGB(r, gb, gb);
		PointConfig pointBlue = new PointConfig(blue);
		return pointBlue;
	}
	
	public void updateGlazingChartData() {
		double one, oneST, oneWall, two, twoST, twoWall, three, threeST, threeWall, four, fourST, fourWall;
		one = this.getFacadeOneGlazedPercentageValue();
		oneST = this.getFacadeOneSolarTransmittance();
		oneWall = functions.roundDecimal(100.0d - one, dpPercentage);
		two = this.getFacadeTwoGlazedPercentageValue();
		twoST = this.getFacadeTwoSolarTransmittance();
		twoWall = functions.roundDecimal(100.0d - two, dpPercentage);
		three = this.getFacadeThreeGlazedPercentageValue();
		threeST = this.getFacadeThreeSolarTransmittance();
		threeWall = functions.roundDecimal(100.0d - three, dpPercentage);
		four = this.getFacadeFourGlazedPercentageValue();
		fourST = this.getFacadeFourSolarTransmittance();
		fourWall = functions.roundDecimal(100.0d - four, dpPercentage);
		
		XYSeries seriesDataGlass = new XYSeries("Glass");
		LinkedHashSet<DecimalPoint> pointsGlass = new LinkedHashSet<DecimalPoint>();
		
		pointsGlass.add(new DecimalPoint(seriesDataGlass, one, getGlassColor(oneST)));
		pointsGlass.add(new DecimalPoint(seriesDataGlass, two, getGlassColor(twoST)));
		pointsGlass.add(new DecimalPoint(seriesDataGlass, three, getGlassColor(threeST)));
		pointsGlass.add(new DecimalPoint(seriesDataGlass, four, getGlassColor(fourST)));

		seriesDataGlass.setSeriesPoints(pointsGlass);
		glazingChart.addSeries(seriesDataGlass);
		
		XYSeries seriesDataWall = new XYSeries("Wall");
		LinkedHashSet<DecimalPoint> pointsWall = new LinkedHashSet<DecimalPoint>();
		
		Color grey = new Color.RGB(157, 157, 157);
		PointConfig pointGrey = new PointConfig(grey);
		
		pointsWall.add(new DecimalPoint(seriesDataWall, oneWall, pointGrey));
		pointsWall.add(new DecimalPoint(seriesDataWall, twoWall, pointGrey));
		pointsWall.add(new DecimalPoint(seriesDataWall, threeWall, pointGrey));
		pointsWall.add(new DecimalPoint(seriesDataWall, fourWall, pointGrey));

		seriesDataWall.setSeriesPoints(pointsWall);
        glazingChart.addSeries(seriesDataWall);
	}

	public void setGlazingSeriesData() {
		glazingChart.removeSeries("Wall");
		glazingChart.removeSeries("Glass");
		this.updateGlazingChartData();
        glazingChart.setSizeUndefined();
        glazingChart.requestRepaint();
        glazingChart.setSizeFull();
	}
		
    public CategoryAxis getGlazingXAxis() {
		return glazingXAxis;
	}

	public void setGlazingXAxis() {
		if (this.getFacadeOneOrientation() != null && this.getFacadeTwoOrientation() != null && this.getFacadeThreeOrientation() != null && this.getFacadeFourOrientation() != null) {
			glazingXAxis.setCategories(Arrays.asList(this.getFacadeOneOrientation(), 
					this.getFacadeTwoOrientation(),
					this.getFacadeThreeOrientation(),
					this.getFacadeFourOrientation()));
		}
        glazingChart.setSizeUndefined();
        glazingChart.requestRepaint();
        glazingChart.setSizeFull();
        notifier.fireValueChange("glazingXAxis");
        this.updateGlazingChartData();
	}
	
	private InvientCharts createDaylightingChart() {
        daylightingChartConfig.getGeneralChartConfig().setType(SeriesType.BAR);
        daylightingChartConfig.getTitle().setText("");

        daylightingXAxis.setCategories(Arrays.asList("North", "East", "South", "West"));
		daylightingXAxesSet.add(daylightingXAxis);
        
		daylightingChartConfig.setXAxes(daylightingXAxesSet);

        daylightingYAxis.setMin(0.0);
		daylightingYAxis.setTitle(new AxisTitle("Daylight Factor (%)"));
		daylightingYAxis.getTitle().setAlign(AxisTitleAlign.HIGH);
        daylightingYAxesSet.add(daylightingYAxis);
        
        daylightingChartConfig.setYAxes(daylightingYAxesSet);
        
        BarConfig seriesCfg = new BarConfig();
        seriesCfg.setDataLabel(new DataLabel());
        daylightingChartConfig.addSeriesConfig(seriesCfg);
        
        daylightingChartConfig.getTooltip().setFormatterJsFunc("function() {"
                                + " return '' + this.series.name +' Floor: '+ this.y +'%';"
                                + "}");
		
        /*

        Legend legend = new Legend();
        legend.setLayout(Layout.VERTICAL);
        legend.setPosition(new Position());
        legend.getPosition().setAlign(HorzAlign.RIGHT);
        legend.getPosition().setVertAlign(VertAlign.TOP);
        legend.getPosition().setX(-100);
        legend.getPosition().setY(100);
        legend.setFloating(true);
        legend.setBorderWidth(1);
        legend.setBackgroundColor(new RGB(255, 255, 255));
        legend.setShadow(true);
        daylightingChartConfig.setLegend(legend);
		*/
        
        daylightingChartConfig.getCredit().setEnabled(false);
        daylightingChartConfig.getLegend().setEnabled(false);
        
		InvientCharts chart = new InvientCharts(daylightingChartConfig);

		return chart;
	}
	
	public PointConfig getDaylightingPointColor(double val) {
		Color green = new Color.RGB(137, 165, 78);
		Color red = new Color.RGB(170, 70, 67);
		Color blue = new Color.RGB(69, 114, 167);
		PointConfig pointGreen = new PointConfig(green);
		PointConfig pointRed = new PointConfig(red);
		PointConfig pointBlue = new PointConfig(blue);
		if (val >= 5)
			return pointRed;
		if (val >= 2)
			return pointGreen;
		return pointBlue;
	}
	
	public void updateDaylightingChartData() {
		XYSeries seriesData;
		double one, two, three, four;
		
		for (int i = 0; i < this.storeys; i++) {
			one = functions.roundDecimal(this.facadeOneAverageDesignDaylightFactor[i][0], dpFactor);
			two = functions.roundDecimal(this.facadeTwoAverageDesignDaylightFactor[i][0], dpFactor);
			three = functions.roundDecimal(this.facadeThreeAverageDesignDaylightFactor[i][0], dpFactor);
			four = functions.roundDecimal(this.facadeFourAverageDesignDaylightFactor[i][0], dpFactor);
			seriesData = new XYSeries(floorNames[i]);
			
			LinkedHashSet<DecimalPoint> points = new LinkedHashSet<DecimalPoint>();
			
			points.add(new DecimalPoint(seriesData, one, getDaylightingPointColor(one)));
			points.add(new DecimalPoint(seriesData, two, getDaylightingPointColor(two)));
			points.add(new DecimalPoint(seriesData, three, getDaylightingPointColor(three)));
			points.add(new DecimalPoint(seriesData, four, getDaylightingPointColor(four)));

			seriesData.setSeriesPoints(points);
			
			daylightingChart.addSeries(seriesData);
		}
	}
	
	//TODO: Remove hardcoded max number floors
	public void setDaylightingSeriesData() {
		for (int i = 0; i < maxStoreys; i++) {
			daylightingChart.removeSeries(floorNames[i]);
		}
		this.updateDaylightingChartData();
        daylightingChart.setSizeUndefined();
		int heightValue = 120 * this.getStoreys();
		String heightStr = (220 + heightValue) + "px";
        daylightingChart.setHeight(heightStr);
        daylightingChart.setWidth("95%");
        daylightingChart.requestRepaint();
        daylightingChart.refresh();
        //daylightingChart.setSizeFull();
	}
	
	public CategoryAxis getDaylightingXAxis() {
		return daylightingXAxis;
	}
	
	public void setDaylightingYAxis() {
		if (this.getFacadeOneOrientation() != null && this.getFacadeTwoOrientation() != null && this.getFacadeThreeOrientation() != null && this.getFacadeFourOrientation() != null) {
			daylightingXAxis.setCategories(Arrays.asList(this.getFacadeOneOrientation(), 
					this.getFacadeTwoOrientation(),
					this.getFacadeThreeOrientation(),
					this.getFacadeFourOrientation()));
		}
        daylightingChart.setSizeUndefined();
        daylightingChart.requestRepaint();
        daylightingChart.setSizeFull();
        notifier.fireValueChange("daylightingXAxis");
        this.updateDaylightingChartData();
	}
	/*
	private static LinkedHashSet<DecimalPoint> getPoints(Series series,
            double... values) {
        LinkedHashSet<DecimalPoint> points = new LinkedHashSet<DecimalPoint>();
        for (double value : values) {
            points.add(new DecimalPoint(series, value));
        }
        return points;
    }
    */
	
	/**
	 * @return the unlockedFacades
	 */
	public int getUnlockedFacades() {
		return unlockedFacades;
	}

	/**
	 * @param unlockedFacades the unlockedFacades to set
	 */
	public void setUnlockedFacades() {
		unlockedFacades = 0;
		if (!facadeOneGlazedAreaLock)
			unlockedFacades++;
		if (!facadeTwoGlazedAreaLock)
			unlockedFacades++;
		if (!facadeThreeGlazedAreaLock)
			unlockedFacades++;
		if (!facadeFourGlazedAreaLock)
			unlockedFacades++;
		notifier.fireValueChange("unlockedFacades");
	}
	
	private double[] getSolarLoadValues(int facades) {
		
		double totalToDistribute = this.averageDailySolarLoadPerFloorTotal;
		if (facadeOneGlazedAreaLock)
			totalToDistribute = totalToDistribute - this.facadeOneAvgDailySolarLoadPerFloor;
		if (facadeTwoGlazedAreaLock)
			totalToDistribute = totalToDistribute - this.facadeTwoAvgDailySolarLoadPerFloor;
		if (facadeThreeGlazedAreaLock)
			totalToDistribute = totalToDistribute - this.facadeThreeAvgDailySolarLoadPerFloor;
		if (facadeFourGlazedAreaLock)
			totalToDistribute = totalToDistribute - this.facadeFourAvgDailySolarLoadPerFloor;
		
		double averageDistributionValue = totalToDistribute / facades;
		
		double maxOne = getFacadeOneMaxDailySolarLoadPerFloor();
		if (maxOne < averageDistributionValue && !facadeOneGlazedAreaLock) {
			facades -= 1;
			totalToDistribute = totalToDistribute - maxOne;
		}
		
		double maxTwo = getFacadeTwoMaxDailySolarLoadPerFloor();
		if (maxTwo < averageDistributionValue && !facadeTwoGlazedAreaLock) {
			facades -= 1;
			totalToDistribute = totalToDistribute - maxTwo;
		}
		
		double maxThree = getFacadeThreeMaxDailySolarLoadPerFloor();
		if (maxThree < averageDistributionValue && !facadeThreeGlazedAreaLock) {
			facades -= 1;
			totalToDistribute = totalToDistribute - maxThree;
		}
		
		double maxFour = getFacadeFourMaxDailySolarLoadPerFloor();
		if (maxFour < averageDistributionValue && !facadeFourGlazedAreaLock) {
			facades -= 1;
			totalToDistribute = totalToDistribute - maxFour;
		}
		
		if (facades != 0)
			averageDistributionValue = totalToDistribute / facades;
		
		double minOne = Math.min(averageDistributionValue, maxOne);
		double minTwo = Math.min(averageDistributionValue, maxTwo);
		double minThree = Math.min(averageDistributionValue, maxThree);
		double minFour = Math.min(averageDistributionValue, maxFour);
		
		double[] toReturn = {minOne, minTwo, minThree, minFour};
		
		return toReturn;
	}

	public void setGlazingDistributionFromSolarLoads() {
		
		saveValues = false;
		
		double[] values = getSolarLoadValues(this.getUnlockedFacades());
		
		if (getFacadeOneAvgDailySolarLoadPerFloor() > 0 && !facadeOneGlazedAreaLock)
			this.setFacadeOneAvgDailySolarLoadPerFloor(values[0]);
		if (getFacadeTwoAvgDailySolarLoadPerFloor() > 0 && !facadeTwoGlazedAreaLock)
			this.setFacadeTwoAvgDailySolarLoadPerFloor(values[1]);
		if (getFacadeThreeAvgDailySolarLoadPerFloor() > 0 && !facadeThreeGlazedAreaLock)
			this.setFacadeThreeAvgDailySolarLoadPerFloor(values[2]);
		if (getFacadeFourAvgDailySolarLoadPerFloor() > 0 && !facadeFourGlazedAreaLock)
			this.setFacadeFourAvgDailySolarLoadPerFloor(values[3]);
		
		// call this until the values have evened out 
		if (!distribLock) { // lock to prevent recursive calls
			distribLock = true;
			for (int i = 0; i < 100; i++) {
				setGlazingDistributionFromSolarLoads();
			}
			distribLock = false;
		}
		
		saveValues = true;
	}
	
	// update the values saved in the database after the glazing is auto distributed by solar load
	public void saveFacadeGlazedPercentages() {
		this.projectInstance.setFacadeGlazedPercentage(0, this.facadeOneGlazedPercentage);
		this.projectInstance.setFacadeGlazedPercentage(1, this.facadeTwoGlazedPercentage);
		this.projectInstance.setFacadeGlazedPercentage(2, this.facadeThreeGlazedPercentage);
		this.projectInstance.setFacadeGlazedPercentage(3, this.facadeFourGlazedPercentage);	
	}
	
	public double getFacadeFourMaxDailySolarLoadPerFloor() {
		return (((facadeFourArea / storeys)	* facadeFourSolarTransmittance * ((100 - facadeFourPercentageFrame) / 100) * facadeFourAverageSolarLoad * facadeFourShadingFactor) / facadeFourTypicalFloorPerimeterZoneArea);
	}
	
	public double getFacadeThreeMaxDailySolarLoadPerFloor() {
		return (((facadeThreeArea / storeys) * facadeThreeSolarTransmittance * ((100 - facadeThreePercentageFrame) / 100) * facadeThreeAverageSolarLoad * facadeThreeShadingFactor) / facadeThreeTypicalFloorPerimeterZoneArea);
	}
	
	public double getFacadeTwoMaxDailySolarLoadPerFloor() {
		return (((facadeTwoArea / storeys) * facadeTwoSolarTransmittance * ((100 - facadeTwoPercentageFrame) / 100) * facadeTwoAverageSolarLoad * facadeTwoShadingFactor) / facadeTwoTypicalFloorPerimeterZoneArea);
	}
	
	public double getFacadeOneMaxDailySolarLoadPerFloor() {
		return (((facadeOneArea / storeys) * facadeOneSolarTransmittance * ((100 - facadeOnePercentageFrame) / 100) * facadeOneAverageSolarLoad * facadeOneShadingFactor) / facadeOneTypicalFloorPerimeterZoneArea);
	}
	
	public void checkFacadeOverflow() {
		double excessArea = (this.getTotalGlazedArea() - this.getTotalGlazedAreaDistributed());
		if (excessArea > 0 && !checkLock){
			//System.out.println("OVERFLOW " + (excessArea));
			this.checkGlazingDistribution();
		}
		if (excessArea < 0 && !checkLock){
			//System.out.println("UNDERFLOW " + (excessArea));
			this.checkGlazingDistribution();
		}
	}
	
	public void checkGlazingDistribution() {
		
		if (unlockedFacades > 0 && this.getTotalGlazedArea() >= 0 && !checkLock 
				&& this.getTotalGlazedAreaDistributed() >= 0 && this.floorToFloor > 0) {
			
			checkLock = true;
			
			double percentageChange = 0d;
			double percentageGlazed = 0d;
			double newPercentageGlazed = 0d;
			double perFacadeArea = 0d;
			double excessArea = 0d;
			double maxPercentage = 0d;
			boolean checkRequired = false;
			boolean[] states = this.saveLockStates();
			
			do {
				checkRequired = false;
				excessArea = (this.getTotalGlazedArea() - this.getTotalGlazedAreaDistributed());
				perFacadeArea = excessArea / unlockedFacades;
				
				//System.out.println("excessArea: " + excessArea + "\t| unlocked: " + unlockedFacades + " | perfacade: " + perFacadeArea);
				
				if (!facadeOneGlazedAreaLock && facadeOneArea > 0) {
					
					maxPercentage = 100d;
					
					if (this.getTotalGlazedArea() < this.getFacadeOneArea()) {
						maxPercentage =  (this.getTotalGlazedArea() / this.getFacadeOneArea() * 100);
					}
					
					percentageChange = (perFacadeArea / facadeOneArea * 100);
					percentageGlazed = (this.facadeOneGlazedPercentage + percentageChange);
					newPercentageGlazed =  Math.max(0, Math.min(maxPercentage, percentageGlazed));
					
					//System.out.println("percentageGlazed: (1) " + percentageGlazed);
					
					if (!(0 <= percentageGlazed && percentageGlazed <= 100) && unlockedFacades > 1)
						checkRequired = true;
					
					if (newPercentageGlazed == this.facadeOneGlazedPercentage)
						this.setFacadeOneGlazedAreaLock(true);
					else
						this.setFacadeOneGlazedPercentage(newPercentageGlazed);
				}
				
				if (!facadeTwoGlazedAreaLock && facadeTwoArea > 0) {
					
					maxPercentage = 100d;
					
					if (this.getTotalGlazedArea() < this.getFacadeTwoArea())
						maxPercentage =  (this.getTotalGlazedArea() / this.getFacadeTwoArea() * 100);
					
					percentageChange = (perFacadeArea / facadeTwoArea * 100);
					percentageGlazed = (this.facadeTwoGlazedPercentage + percentageChange);
					newPercentageGlazed =  Math.max(0, Math.min(maxPercentage, percentageGlazed));
					
					//System.out.println("percentageGlazed: (2) " + percentageGlazed);
					
					if (!(0 <= percentageGlazed && percentageGlazed <= 100) && unlockedFacades > 1)
						checkRequired = true;
					
					if (newPercentageGlazed == this.facadeTwoGlazedPercentage)
						this.setFacadeTwoGlazedAreaLock(true);
					else
						this.setFacadeTwoGlazedPercentage(newPercentageGlazed);
				}
				
				if (!facadeThreeGlazedAreaLock && facadeThreeArea > 0) {
					
					maxPercentage = 100d;
					
					if (this.getTotalGlazedArea() < this.getFacadeThreeArea())
						maxPercentage =  (this.getTotalGlazedArea() / this.getFacadeThreeArea() * 100);
					
					percentageChange = (perFacadeArea / facadeThreeArea * 100);
					percentageGlazed = (this.facadeThreeGlazedPercentage + percentageChange);
					newPercentageGlazed =  Math.max(0, Math.min(maxPercentage, percentageGlazed));
					
					//System.out.println("percentageGlazed: (3) " + percentageGlazed);
					
					if (!(0 <= percentageGlazed && percentageGlazed <= 100) && unlockedFacades > 1)
						checkRequired = true;
					
					if (newPercentageGlazed == this.facadeThreeGlazedPercentage)
						this.setFacadeThreeGlazedAreaLock(true);
					else
						this.setFacadeThreeGlazedPercentage(newPercentageGlazed);
				}
				
				if (!facadeFourGlazedAreaLock && facadeFourArea > 0) {
					
					maxPercentage = 100d;
					
					if (this.getTotalGlazedArea() < this.getFacadeFourArea())
						maxPercentage =  (this.getTotalGlazedArea() / this.getFacadeFourArea() * 100);

					percentageChange = (perFacadeArea / facadeFourArea * 100);
					percentageGlazed = (this.facadeFourGlazedPercentage + percentageChange);
					newPercentageGlazed =  Math.max(0, Math.min(maxPercentage, percentageGlazed));
					
					//System.out.println("percentageGlazed: (4) " + percentageGlazed);
					
					if (!(0 <= percentageGlazed && percentageGlazed <= 100) && unlockedFacades > 1)
						checkRequired = true;
					
					if (newPercentageGlazed == this.facadeFourGlazedPercentage)
						this.setFacadeFourGlazedAreaLock(true);
					else
						this.setFacadeFourGlazedPercentage(newPercentageGlazed);
				}

			} while (checkRequired);
			
			this.restoreLockStates(states);
			
			checkLock = false;
		}
	}

	// START - Building Information Getters & Setters

	public void setLengthWidth(double length, double width) {
		this.length = length;
		this.width = width;
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setInternalLength();
		this.setInternalWidth();
		this.setFacadeOneArea();
		this.setFacadeTwoArea();
		this.setFacadeThreeArea();
		this.setFacadeFourArea();
		this.setRoofArea();
		this.setGroundFloorArea();
		this.setVolume();
		this.updateCanvas();
		notifier.fireValueChange("length");
		notifier.fireValueChange("width");
		this.enableSaving(true);
		if (saveValues) {
			this.projectInstance.setLength(length);
			this.projectInstance.setWidth(width);
		}
		this.enableSaving(previousSaving);
	}
	
	/**
	 * @return the length
	 */
	public double getLength() {
		return functions.roundDecimal(length, dpDistance);
	}

	/**
	 * @param length
	 *            the length to set
	 */
	public void setLength(double length) {
		this.length = length;
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setInternalLength();
		this.setFacadeTwoArea();
		this.setFacadeFourArea();
		this.setRoofArea();
		this.setGroundFloorArea();
		this.setVolume();
		this.updateCanvas();
		notifier.fireValueChange("length");
		this.enableSaving(true);
		if (saveValues) {this.projectInstance.setLength(length);}
		this.enableSaving(previousSaving);
	}

	/**
	 * @return the width
	 */
	public double getWidth() {
		return functions.roundDecimal(width, dpDistance);
	}

	/**
	 * @param width
	 *            the width to set
	 */
	public void setWidth(double width) {
		this.width = width;
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setInternalWidth();
		this.setFacadeOneArea();
		this.setFacadeThreeArea();
		this.setRoofArea();
		this.setGroundFloorArea();
		this.setVolume();
		this.updateCanvas();
		notifier.fireValueChange("width");
		this.enableSaving(true);
		if (saveValues) {this.projectInstance.setWidth(width);}
		this.enableSaving(previousSaving);
	}

	/**
	 * @return the overallBuildingHeight
	 */
	public double getOverallBuildingHeight() {
		return functions.roundDecimal(overallBuildingHeight, dpDistance);
	}

	/**
	 * set overallBuildingHeight
	 */
	public void setOverallBuildingHeight() {
		this.overallBuildingHeight = (floorToFloor * storeys);
		this.setFacadeOneArea();
		this.setFacadeTwoArea();
		this.setFacadeThreeArea();
		this.setFacadeFourArea();
		this.setVolume();
		notifier.fireValueChange("overallBuildingHeight");
		if (saveValues) {this.projectInstance.setOverallBuildingHeight(this.overallBuildingHeight);}
	}
	
	/**
	 * @param height
	 *            the height to set
	 */
	public void setOverallBuildingHeight(double height) {
		this.overallBuildingHeight = height;
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setFacadeOneArea();
		this.setFacadeTwoArea();
		this.setFacadeThreeArea();
		this.setFacadeFourArea();
		this.setVolume();
		notifier.fireValueChange("overallBuildingHeight");
		this.enableSaving(true);
		if (saveValues) {this.projectInstance.setOverallBuildingHeight(height);}
		this.enableSaving(previousSaving);
	}

	/**
	 * @return the storeys
	 */
	public int getStoreys() {
		return storeys;
	}

	/**
	 * @param storeys
	 *            the storeys to set
	 */
	public void setStoreys(int storeys) {
		this.storeys = storeys;
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setOverallBuildingHeight();
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		this.setFacadeOneTypicalFloorArea();
		this.setFacadeTwoTypicalFloorArea();
		this.setFacadeThreeTypicalFloorArea();
		this.setFacadeFourTypicalFloorArea();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeOne, i);
			this.setFloorAngleY(facadeOne, i);
			this.setFloorAngleX(facadeTwo, i);
			this.setFloorAngleY(facadeTwo, i);
			this.setFloorAngleX(facadeThree, i);
			this.setFloorAngleY(facadeThree, i);
			this.setFloorAngleX(facadeFour, i);
			this.setFloorAngleY(facadeFour, i);
		}
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		
		if (this.getDaylightingPerFacade() != null) {
			this.getDaylightingPerFacade().removeAllComponents();
			this.daylightingChart = this.createDaylightingChart();
			this.setDaylightingYAxis();
			this.getDaylightingPerFacade().addComponent(getDaylightingChart());
		}
		this.setDaylightingSeriesData();
		//
		notifier.fireValueChange("storeys");
		this.enableSaving(true);
		if (saveValues) {this.projectInstance.setStoreys(storeys);}
		this.enableSaving(previousSaving);
	}

	/**
	 * @return the floorToFloor
	 */
	public double getFloorToFloor() {
		return functions.roundDecimal(floorToFloor, dpDistance);
	}

	/**
	 * @param floorToFloor
	 *            the floorToFloor to set
	 */
	public void setFloorToFloor(double floorToFloor) {
		this.floorToFloor = floorToFloor;
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setOverallBuildingHeight();
		this.setFloorToCeiling();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeOne, i);
			this.setFloorAngleY(facadeTwo, i);
			this.setFloorAngleY(facadeThree, i);
			this.setFloorAngleY(facadeFour, i);
		}
		notifier.fireValueChange("floorToFloor");
		this.enableSaving(true);
		if (saveValues) {this.projectInstance.setFloorToFloor(floorToFloor);}
		this.enableSaving(previousSaving);
	}

	/**
	 * @return the floorToCeiling
	 */
	public double getFloorToCeiling() {
		return functions.roundDecimal(floorToCeiling, dpDistance);
	}

	/**
	 * @param floorToCeiling
	 *            the floorToCeiling to set
	 */
	public void setFloorToCeiling() {
		this.floorToCeiling = (floorToFloor - 0.5d);
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setInternalWallArea();
		notifier.fireValueChange("floorToCeiling");
		this.enableSaving(true);
		if (saveValues) {this.projectInstance.setFloorToCeiling(this.floorToCeiling);}
		this.enableSaving(previousSaving);
	}
	
	/**
	 * @param floorToCeiling
	 *            the floorToCeiling to set
	 */
	public void setFloorToCeiling(double floorToCeiling) {
		this.floorToCeiling = floorToCeiling;
		boolean previousSaving = this.saveValues;
		this.enableSaving(false);
		this.setInternalWallArea();
		notifier.fireValueChange("floorToCeiling");
		this.enableSaving(true);
		if (saveValues) {this.projectInstance.setFloorToCeiling(floorToCeiling);}
		this.enableSaving(previousSaving);
	}

	/**
	 * @return the wallThickness
	 */
	public double getWallThickness() {
		return functions.roundDecimal(wallThickness, dpDistance);
	}

	/**
	 * @param wallThickness
	 *            the wallThickness to set
	 */
	public void setWallThickness(double wallThickness) {
		this.wallThickness = wallThickness;
		this.setInternalLength();
		this.setInternalWidth();
		notifier.fireValueChange("wallThickness");
		if (saveValues) {this.projectInstance.setWallThickness(wallThickness);}
	}

	/**
	 * @return the internalLength
	 */
	public double getInternalLength() {
		return functions.roundDecimal(internalLength, dpDistance);
	}

	/**
	 * the internalLength to set
	 */
	public void setInternalLength() {
		this.internalLength = (length - (wallThickness * 2));
		this.setInternalFloorArea();
		this.setInternalCeilingArea();
		this.setInternalWallArea();
		this.setFacadeTwoTypicalFloorPerimeterZoneArea();
		this.setFacadeFourTypicalFloorPerimeterZoneArea();
		notifier.fireValueChange("internalLength");
	}

	/**
	 * @return the internalWidth
	 */
	public double getInternalWidth() {
		return functions.roundDecimal(internalWidth, dpDistance);
	}

	/**
	 * the internalWidth to set
	 */
	public void setInternalWidth() {
		this.internalWidth = (width - (wallThickness * 2));
		this.setInternalFloorArea();
		this.setInternalCeilingArea();
		this.setInternalWallArea();
		this.setFacadeOneTypicalFloorPerimeterZoneArea();
		this.setFacadeThreeTypicalFloorPerimeterZoneArea();
		notifier.fireValueChange("internalWidth");
	}

	/**
	 * @return the internalFloorArea
	 */
	public double getInternalFloorArea() {
		return functions.roundDecimal(internalFloorArea, dpArea);
	}

	/**
	 * the internalFloorArea to set
	 */
	public void setInternalFloorArea() {
		this.internalFloorArea = (internalWidth * internalLength);
		this.setAreaOfInternalSurfaces();
		notifier.fireValueChange("internalFloorArea");
	}

	/**
	 * @return the internalCeilingArea
	 */
	public double getInternalCeilingArea() {
		return functions.roundDecimal(internalCeilingArea, dpArea);
	}

	/**
	 * the internalCeilingArea to set
	 */
	public void setInternalCeilingArea() {
		this.internalCeilingArea = (internalWidth * internalLength);
		this.setAreaOfInternalSurfaces();
		notifier.fireValueChange("internalCeilingArea");
	}

	/**
	 * @return the internalWallArea
	 */
	public double getInternalWallArea() {
		return functions.roundDecimal(internalWallArea, dpArea);
	}

	/**
	 * the internalWallArea to set
	 */
	public void setInternalWallArea() {
		this.internalWallArea = (2 * (internalWidth + internalLength) * floorToCeiling);
		this.setAreaOfInternalSurfaces();
		notifier.fireValueChange("internalWallArea");
	}

	// END - Building Information Getters & Setters

	// START - Building Properties Getters & Setters

	/**
	 * @return the facadeType
	 */
	public String getFacadeType() {
		return facadeType;
	}

	/**
	 * @param facadeType the facadeType to set
	 */
	public void setFacadeType(String facadeType) {
		this.facadeType = facadeType;
		notifier.fireValueChange("facadeType");
		if (saveValues) {this.projectInstance.setFacadeType(facadeType);}
	}

	/**
	 * @return the buildingType
	 */
	public String getBuildingType() {
		return buildingType;
	}

	/**
	 * @param buildingType the buildingType to set
	 */
	public void setBuildingType(String buildingType) {
		this.buildingType = buildingType;
		this.setMaintenanceFactorValue();
		notifier.fireValueChange("buildingType");
		if (saveValues) {this.projectInstance.setBuildingType(buildingType);}
	}
	
	/**
	 * @return the locationSetting
	 */
	public String getLocationSetting() {
		return locationSetting;
	}

	/**
	 * @param locationSetting the locationSetting to set
	 */
	public void setLocationSetting(String locationSetting) {
		this.locationSetting = locationSetting;
		this.setMaintenanceFactorValue();
		notifier.fireValueChange("locationSetting");
		if (saveValues) {this.projectInstance.setLocationSetting(locationSetting);}
	}
	
	// END - Building Properties Getters & Setters

	// START - Building Location Getters & Setters
	
	/**
	 * @return the gpsLocation
	 */
	public Point2D.Double getGpsLocation() {
		return gpsLocation;
	}

	/**
	 * @param gpsLocation the gpsLocation to set
	 */
	public void setGpsLocation(Point2D.Double gpsLocation) {
		this.gpsLocation = gpsLocation;
		this.setLongitude();
		this.setLatitude();
		notifier.fireValueChange("gpsLocation");
	}
	
	/**
	 * @return the latitude
	 */
	public double getLatitude() {
		return functions.roundDecimal(latitude, 6);
	}

	/**
	 * @param latitude
	 *            the latitude to set
	 */
	public void setLatitude() {
		this.latitude = this.gpsLocation.getY();
		notifier.fireValueChange("latitude");
		if (saveValues) {this.projectInstance.setLatitude(this.latitude);}
	}

	/**
	 * @return the longitude
	 */
	public double getLongitude() {
		return functions.roundDecimal(longitude, 6);
	}

	/**
	 * @param longitude
	 *            the longitude to set
	 */
	public void setLongitude() {
		this.longitude = this.gpsLocation.getX();
		notifier.fireValueChange("longitude");
		if (saveValues) {this.projectInstance.setLongitude(this.longitude);}
	}

	/**
	 * @return the orientation
	 */
	public String getOrientation() {
		return orientation;
	}

	/**
	 * @param orientation
	 *            the orientation to set
	 */
	public void setOrientation(String orientation) {
		this.orientation = orientation;
		if (this.orientation.equals(NS)) {
			this.setFacadeOneOrientation(N);
			this.setFacadeTwoOrientation(E);
			this.setFacadeThreeOrientation(S);
			this.setFacadeFourOrientation(W);
			this.setRotation(0);
			this.setAverageSolarLoads(125.0d, 205.0d, 156.0d, 205.0d);
		} else if (this.orientation.equals(NESW)) {
			this.setFacadeOneOrientation(NE);
			this.setFacadeTwoOrientation(SE);
			this.setFacadeThreeOrientation(SW);
			this.setFacadeFourOrientation(NW);
			this.setRotation(45);
			this.setAverageSolarLoads(160.0d, 198.0d, 198.0d, 160.0d);
		} else if (this.orientation.equals(EW)) {
			this.setFacadeOneOrientation(E);
			this.setFacadeTwoOrientation(S);
			this.setFacadeThreeOrientation(W);
			this.setFacadeFourOrientation(N);
			this.setRotation(90);
			this.setAverageSolarLoads(205.0d, 156.0d, 205.0d, 125.0d);
		} else if (this.orientation.equals(SENW)) {
			this.setFacadeOneOrientation(SE);
			this.setFacadeTwoOrientation(SW);
			this.setFacadeThreeOrientation(NW);
			this.setFacadeFourOrientation(NE);
			this.setRotation(135);
			this.setAverageSolarLoads(198.0d, 198.0d, 160.0d, 160.0d);
		}
		notifier.fireValueChange("orientation");
		if (saveValues) {this.projectInstance.setOrientation(orientation);}
		this.setHeatGainXAxis();
		this.setGlazingXAxis();
		this.setDaylightingYAxis();
	}

	// END - Building Location Getters & Setters

	// START - Thermal Information Getters & Setters

	/**
	 * @return the uValueRoof
	 */
	public double getuValueRoof() {
		return functions.roundDecimal(uValueRoof, dpUvalue);
	}

	/**
	 * @param uValueRoof
	 *            the uValueRoof to set
	 */
	public void setuValueRoof(double uValueRoof) {
		this.uValueRoof = uValueRoof;
		this.setAverageUvalueRoofAndFloor();
		this.setuValueRoofValue();
		notifier.fireValueChange("uValueRoof");
		if (saveValues) {this.projectInstance.setuValueRoof(uValueRoof);}
	}

	public double getuValueRoofValue() {
		return functions.roundDecimal(uValueRoofValue, dpUvalue);
	}

	public void setuValueRoofValue() {
		this.uValueRoofValue = this.uValueRoof;
		notifier.fireValueChange("uValueRoofValue");
	}

	/**
	 * @return the uValueGroundFloor
	 */
	public double getuValueGroundFloor() {
		return functions.roundDecimal(uValueGroundFloor, dpUvalue);
	}

	/**
	 * @param uValueGroundFloor
	 *            the uValueGroundFloor to set
	 */
	public void setuValueGroundFloor(double uValueGroundFloor) {
		this.uValueGroundFloor = uValueGroundFloor;
		this.setAverageUvalueRoofAndFloor();
		this.setuValueGroundFloorValue();
		notifier.fireValueChange("uValueGroundFloor");
		if (saveValues) {this.projectInstance.setuValueGroundFloor(uValueGroundFloor);}
	}

	public double getuValueGroundFloorValue() {
		return functions.roundDecimal(uValueGroundFloorValue, dpUvalue);
	}

	public void setuValueGroundFloorValue() {
		this.uValueGroundFloorValue = this.uValueGroundFloor;
		notifier.fireValueChange("uValueGroundFloorValue");
	}

	/**
	 * @return the uValueWalls
	 */
	public double getuValueWalls() {
		return functions.roundDecimal(uValueWalls, dpUvalue);
	}

	/**
	 * @param uValueWalls
	 *            the uValueWalls to set
	 */
	public void setuValueWalls(double uValueWalls) {
		this.uValueWalls = uValueWalls;
		this.setMaxPercentageGlazing();
		this.setuValueWallsValue();
		notifier.fireValueChange("uValueWalls");
		if (saveValues) {this.projectInstance.setuValueWalls(uValueWalls);}
	}

	public double getuValueWallsValue() {
		return functions.roundDecimal(uValueWallsValue, dpUvalue);
	}

	public void setuValueWallsValue() {
		this.uValueWallsValue = this.uValueWalls;
		notifier.fireValueChange("uValueWallsValue");
	}

	/**
	 * @return the uValueGlazing
	 */
	public double getuValueGlazing() {
		return functions.roundDecimal(uValueGlazing, dpUvalue);
	}

	/**
	 * @param uValueGlazing
	 *            the uValueGlazing to set
	 */
	public void setuValueGlazing(double uValueGlazing) {
		this.uValueGlazing = uValueGlazing;
		this.setMaxPercentageGlazing();
		this.setuValueGlazingValue();
		notifier.fireValueChange("uValueGlazing");
		if (saveValues) {this.projectInstance.setuValueGlazing(uValueGlazing);}
	}

	public double getuValueGlazingValue() {
		return functions.roundDecimal(uValueGlazingValue, dpUvalue);
	}

	public void setuValueGlazingValue() {
		this.uValueGlazingValue = this.uValueGlazing;
		notifier.fireValueChange("uValueGlazingValue");
	}
	
	// END - Thermal Information Getters & Setters

	// START - Glazing Information Getters & Setters

	/**
	 * @return the percentageWall
	 */
	public double getPercentageWall() {
		return functions.roundDecimal(percentageWall, dpPercentage);
	}

	/**
	 * the percentageWall to set
	 */
	public void setPercentageWall() {
		this.percentageWall = (100 - maxPercentageGlazing);
		notifier.fireValueChange("percentageWall");
	}

	/**
	 * @return the maxPercentageGlazing
	 */
	public double getMaxPercentageGlazing() {
		return functions.roundDecimal(maxPercentageGlazing, dpPercentage);
	}

	/**
	 * the maxPercentageGlazing to set
	 */
	public void setMaxPercentageGlazing() {
		this.maxPercentageGlazing = Math.max(0, Math.min(100.0d, ((this.getFacadePerformance() - uValueWalls) / ((uValueGlazing - uValueWalls) / 100))));
		this.setPercentageGlazing();
		notifier.fireValueChange("maxPercentageGlazing");
	}

	/**
	 * @return the percentageGlazing
	 */
	public double getPercentageGlazing() {
		double toReturn = this.maxPercentageGlazing;
		if (percentageGlazing != null)
			toReturn = percentageGlazing;
		return functions.roundDecimal(toReturn, dpPercentage);
	}

	/**
	 * @return the percentageGlazing
	 * 
	 * to account for null values
	 */
	public Double getSavedPercentageGlazing() {
		return percentageGlazing;
	}
	
	/**
	 * the percentageGlazing to set
	 */
	public void setPercentageGlazing() {
		this.percentageGlazing = this.maxPercentageGlazing;
		this.setPercentageWall();
		this.setTotalGlazedArea();
		this.setPercentageGlazingValue();
		notifier.fireValueChange("percentageGlazing");
		if (saveValues) {this.projectInstance.setPercentageGlazing(this.percentageGlazing);}
	}

	/**
	 * @param percentageGlazing
	 *            the percentageGlazing to set
	 */
	public void setPercentageGlazing(double percentageGlazing) {
		//if (!(percentageGlazing >= 0))
			//return;
		if (percentageGlazing == this.getMaxPercentageGlazing())
			this.percentageGlazing = maxPercentageGlazing;
		else
			this.percentageGlazing = percentageGlazing;
		this.setPercentageWall();
		this.setTotalGlazedArea();
		this.setPercentageGlazingValue();
		notifier.fireValueChange("percentageGlazing");
		if (saveValues) {this.projectInstance.setPercentageGlazing(this.percentageGlazing);}
	}

	/**
	 * @return the percentageGlazingValue
	 */
	public double getPercentageGlazingValue() {
		return functions.roundDecimal(percentageGlazingValue, dpPercentage);
	}

	/**
	 * @param percentageGlazingValue the percentageGlazingValue to set
	 */
	public void setPercentageGlazingValue() {
		this.percentageGlazingValue = this.percentageGlazing;
		this.setGlazingWallRatio();
		notifier.fireValueChange("percentageGlazingValue");
	}

	/**
	 * @return the glazingWallRatio
	 */
	public String getGlazingWallRatio() {
		return glazingWallRatio;
	}

	/**
	 * @param glazingWallRatio the glazingWallRatio to set
	 */
	public void setGlazingWallRatio() {
		int glazingRatio = (int) functions.roundDecimal(percentageGlazingValue, 0);
		int wallRatio = 100 - glazingRatio;
		this.glazingWallRatio = glazingRatio + ":" + wallRatio;
		notifier.fireValueChange("glazingWallRatio");
	}

	/**
	 * @return the totalGlazedArea
	 */
	public double getTotalGlazedArea() {
		return functions.roundDecimal(totalGlazedArea, dpArea);
	}

	/**
	 * @return the totalWallArea
	 */
	public double getTotalWallArea() {
		return functions.roundDecimal(totalFacadeArea - totalGlazedArea, dpArea);
	}
	
	/**
	 * set the totalGlazedArea
	 */
	public void setTotalGlazedArea() {
		this.totalGlazedArea = (totalFacadeArea * this.getPercentageGlazing() / 100);
		//this.checkGlazingDistribution();
		this.setFacadeOneGlazedArea();
		this.setFacadeTwoGlazedArea();
		this.setFacadeThreeGlazedArea();
		this.setFacadeFourGlazedArea();
		notifier.fireValueChange("totalGlazedArea");
	}

	/**
	 * @return the totalGlazedAreaDistributed
	 */
	public double getTotalGlazedAreaDistributed() {
		return functions.roundDecimal(totalGlazedAreaDistributed, dpArea);
	}

	/**
	 * @param totalGlazedAreaDistributed the totalGlazedAreaDistributed to set
	 */
	public void setTotalGlazedAreaDistributed() {
		this.totalGlazedAreaDistributed = (facadeOneGlazedArea + facadeTwoGlazedArea + facadeThreeGlazedArea + facadeFourGlazedArea);
		this.checkGlazingDistribution();
		notifier.fireValueChange("totalGlazedAreaDistributed");
	}
	
	// END - Glazing Information Getters & Setters

	// START - Glazing Distribution Getters & Setters
	
	/**
	 * @return the facadeOnePercentageTotalGlazedArea
	 */
	public double getFacadeOnePercentageTotalGlazedArea() {
		return functions.roundDecimal(facadeOnePercentageTotalGlazedArea, dpPercentage);
	}

	/**
	 * @param facadeOnePercentageTotalGlazedArea
	 *            the facadeOnePercentageTotalGlazedArea to set
	 */
	public void setFacadeOnePercentageTotalGlazedArea(double facadeOnePercentageTotalGlazedArea) {
		this.facadeOnePercentageTotalGlazedArea = facadeOnePercentageTotalGlazedArea;
		this.setFacadeOneGlazedArea();
		notifier.fireValueChange("facadeOnePercentageTotalGlazedArea");
	}
	
	/**
	 * recalculate facadeOnePercentageTotalGlazedArea
	 */
	/*
	public void setFacadeOnePercentageTotalGlazedArea() {
		this.facadeOnePercentageTotalGlazedArea = (facadeOneGlazedArea / totalGlazedArea * 100) ;
		this.setFacadeOneGlazedArea();
		//this.checkGlazingDistribution(1);
		notifier.fireValueChange("facadeOnePercentageTotalGlazedArea");
	}
	*/
	
	/**
	 * @return the facadeOneGlazedAreaLock
	 */
	public boolean isFacadeOneGlazedAreaLock() {
		return facadeOneGlazedAreaLock;
	}

	/**
	 * @param facadeOneGlazedAreaLock the facadeOneGlazedAreaLock to set
	 */
	public void setFacadeOneGlazedAreaLock(
			boolean facadeOneGlazedAreaLock) {
		this.facadeOneGlazedAreaLock = facadeOneGlazedAreaLock;
		this.setUnlockedFacades();
		notifier.fireValueChange("facadeOneGlazedAreaLock");
		if (saveValues) {this.projectInstance.setFacadeGlazedAreaLock(0, this.facadeOneGlazedAreaLock);}
	}

	/**
	 * @return the facadeOneGlazedArea
	 */
	public double getFacadeOneGlazedArea() {
		return functions.roundDecimal(facadeOneGlazedArea, dpArea);
	}
	
	/**
	 * @return the facadeOneWallArea
	 */
	public double getFacadeOneWallArea() {
		return functions.roundDecimal(facadeOneArea - facadeOneGlazedArea, dpArea);
	}

	/**
	 * recalculate facadeOneGlazedArea
	 */
	public void setFacadeOneGlazedArea() {
		this.facadeOneGlazedArea = Math.max(0, Math.min(facadeOneArea, ((facadeOneArea * facadeOneGlazedPercentage / 100))));
		//this.facadeOneGlazedArea = Math.max(0, Math.min(facadeOneArea, ((totalGlazedArea * facadeOnePercentageTotalGlazedArea / 100))));
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		boolean savedLockState = this.facadeOneGlazedAreaLock;
		this.setFacadeOneGlazedAreaLock(true);
		this.setTotalGlazedAreaDistributed();
		this.setFacadeOneGlazedAreaLock(false);
		this.checkFacadeOverflow();
		this.setFacadeOneGlazedAreaLock(savedLockState);
		notifier.fireValueChange("facadeOneGlazedArea");
	}
	
	/**
	 * recalculate facadeOneGlazedArea from even distribution of solar loads
	 */
	public void setFacadeOneGlazedAreaFromSolarLoads() {
		this.facadeOneGlazedArea = (facadeOneAvgDailySolarLoadPerFloor * storeys) / 
				(facadeOneSolarTransmittance * facadeOneAverageSolarLoad * facadeOneShadingFactor * 
				( (1 / facadeOneTypicalFloorPerimeterZoneArea) - 
				(facadeOnePercentageFrame / (100 * facadeOneTypicalFloorPerimeterZoneArea)) ));
		//this.setFacadeOneAvgDailySolarLoadPerFloor();
		//this.setFacadeOneGlazedAreaLock(true);
		//this.setTotalGlazedAreaDistributed();
		//this.setFacadeOneGlazedAreaLock(false);
		//this.checkFacadeOverflow();
		this.setFacadeOneGlazedPercentage();
		notifier.fireValueChange("facadeOneGlazedArea");
	}
	
	/**
	 * @return the facadeOneGlazedPercentage
	 */
	public double getFacadeOneGlazedPercentage() {
		return functions.roundDecimal(facadeOneGlazedPercentage, dpPercentage);
	}

	/**
	 * recalculate facadeOneGlazedPercentage
	 */
	public void setFacadeOneGlazedPercentage() {
		this.facadeOneGlazedPercentage = (facadeOneGlazedArea / facadeOneArea * 100);
		this.setFacadeOneTypicalFloorGlazedArea();
		this.setFacadeOneGlazedArea();
		notifier.fireValueChange("facadeOneGlazedPercentage");
		this.facadeOneGlazedPercentageValue = this.facadeOneGlazedPercentage;
		notifier.fireValueChange("facadeOneGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(0, this.facadeOneGlazedPercentage);}
	}
	
	/**
	 * @param facadeOneGlazedPercentage
	 *            the facadeOneGlazedPercentage to set
	 */
	public void setFacadeOneGlazedPercentage(double facadeOneGlazedPercentage) {
		//if (unlockedFacades == 1 && !checkLock)
		//	facadeOneGlazedPercentage = this.facadeOneGlazedPercentage;
		//else
			this.facadeOneGlazedPercentage = facadeOneGlazedPercentage;
		this.setFacadeOneTypicalFloorGlazedArea();
		this.setFacadeOnePercentageTotalGlazedArea(Math.max(0, Math.min(100, (facadeOneArea / totalGlazedArea * 100)) * facadeOneGlazedPercentage / 100));
		notifier.fireValueChange("facadeOneGlazedPercentage");
		this.facadeOneGlazedPercentageValue = this.facadeOneGlazedPercentage;
		notifier.fireValueChange("facadeOneGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(0, this.facadeOneGlazedPercentage);}
	}
	
	/**
	 * @return the facadeTwoPercentageTotalGlazedArea
	 */
	public double getFacadeTwoPercentageTotalGlazedArea() {
		return functions.roundDecimal(facadeTwoPercentageTotalGlazedArea, dpPercentage);
	}

	/**
	 * @param facadeTwoPercentageTotalGlazedArea
	 *            the facadeTwoPercentageTotalGlazedArea to set
	 */
	public void setFacadeTwoPercentageTotalGlazedArea(double facadeTwoPercentageTotalGlazedArea) {
		this.facadeTwoPercentageTotalGlazedArea = facadeTwoPercentageTotalGlazedArea;
		this.setFacadeTwoGlazedArea();
		notifier.fireValueChange("facadeTwoPercentageTotalGlazedArea");
	}
	
	/**
	 * recalculate facadeTwoPercentageTotalGlazedArea
	 */
	/*
	public void setFacadeTwoPercentageTotalGlazedArea() {
		this.facadeTwoPercentageTotalGlazedArea = (facadeTwoGlazedArea / totalGlazedArea * 100) ;
		this.setFacadeTwoGlazedArea();
		//this.checkGlazingDistribution(1);
		notifier.fireValueChange("facadeTwoPercentageTotalGlazedArea");
	}
	*/

	/**
	 * @return the facadeTwoGlazedAreaLock
	 */
	public boolean isFacadeTwoGlazedAreaLock() {
		return facadeTwoGlazedAreaLock;
	}

	/**
	 * @param facadeTwoGlazedAreaLock the facadeTwoGlazedAreaLock to set
	 */
	public void setFacadeTwoGlazedAreaLock(
			boolean facadeTwoGlazedAreaLock) {
		this.facadeTwoGlazedAreaLock = facadeTwoGlazedAreaLock;
		this.setUnlockedFacades();
		notifier.fireValueChange("facadeTwoGlazedAreaLock");
		if (saveValues) {this.projectInstance.setFacadeGlazedAreaLock(1, this.facadeTwoGlazedAreaLock);}
	}

	/**
	 * @return the facadeTwoGlazedArea
	 */
	public double getFacadeTwoGlazedArea() {
		return functions.roundDecimal(facadeTwoGlazedArea, dpArea);
	}

	/**
	 * @return the facadeTwoWallArea
	 */
	public double getFacadeTwoWallArea() {
		return functions.roundDecimal(facadeTwoArea - facadeTwoGlazedArea, dpArea);
	}
	
	/**
	 * recalculate facadeTwoGlazedArea
	 */
	public void setFacadeTwoGlazedArea() {
		this.facadeTwoGlazedArea = Math.max(0, Math.min(facadeTwoArea, ((facadeTwoArea * facadeTwoGlazedPercentage / 100))));
		//this.facadeTwoGlazedArea = Math.max(0, Math.min(facadeTwoArea, ((totalGlazedArea * facadeTwoPercentageTotalGlazedArea / 100))));
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		boolean savedLockState = this.facadeTwoGlazedAreaLock;
		this.setFacadeTwoGlazedAreaLock(true);
		this.setTotalGlazedAreaDistributed();
		this.setFacadeTwoGlazedAreaLock(false);
		this.checkFacadeOverflow();
		this.setFacadeTwoGlazedAreaLock(savedLockState);
		notifier.fireValueChange("facadeTwoGlazedArea");
	}
	
	/**
	 * recalculate facadeTwoGlazedArea from even distribution of solar loads
	 */
	public void setFacadeTwoGlazedAreaFromSolarLoads() {
		this.facadeTwoGlazedArea = (facadeTwoAvgDailySolarLoadPerFloor * storeys) / 
				(facadeTwoSolarTransmittance * facadeTwoAverageSolarLoad * facadeTwoShadingFactor * 
				( (1 / facadeTwoTypicalFloorPerimeterZoneArea) - 
				(facadeTwoPercentageFrame / (100 * facadeTwoTypicalFloorPerimeterZoneArea)) ));
		//this.setFacadeTwoAvgDailySolarLoadPerFloor();
		//this.setFacadeTwoGlazedAreaLock(true);
		//this.setTotalGlazedAreaDistributed();
		//this.setFacadeTwoGlazedAreaLock(false);
		//this.checkFacadeOverflow();
		this.setFacadeTwoGlazedPercentage();
		notifier.fireValueChange("facadeTwoGlazedArea");
	}
	
	/**
	 * @return the facadeTwoGlazedPercentage
	 */
	public double getFacadeTwoGlazedPercentage() {
		return functions.roundDecimal(facadeTwoGlazedPercentage, dpPercentage);
	}

	/**
	 * recalculate facadeTwoGlazedPercentage
	 */
	public void setFacadeTwoGlazedPercentage() {
		this.facadeTwoGlazedPercentage = (facadeTwoGlazedArea / facadeTwoArea * 100);
		this.setFacadeTwoTypicalFloorGlazedArea();
		this.setFacadeTwoGlazedArea();
		notifier.fireValueChange("facadeTwoGlazedPercentage");
		this.facadeTwoGlazedPercentageValue = this.facadeTwoGlazedPercentage;
		notifier.fireValueChange("facadeTwoGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(1, this.facadeTwoGlazedPercentage);}
	}
	
	/**
	 * @param facadeTwoGlazedPercentage
	 *            the facadeTwoGlazedPercentage to set
	 */
	public void setFacadeTwoGlazedPercentage(double facadeTwoGlazedPercentage) {
		//if (unlockedFacades == 1 && !checkLock)
		//	facadeTwoGlazedPercentage = this.facadeTwoGlazedPercentage;
		//else
			this.facadeTwoGlazedPercentage = facadeTwoGlazedPercentage;
		this.setFacadeTwoTypicalFloorGlazedArea();
		this.setFacadeTwoPercentageTotalGlazedArea(Math.max(0, Math.min(100, (facadeTwoArea / totalGlazedArea * 100)) * facadeTwoGlazedPercentage / 100));
		notifier.fireValueChange("facadeTwoGlazedPercentage");
		this.facadeTwoGlazedPercentageValue = this.facadeTwoGlazedPercentage;
		notifier.fireValueChange("facadeTwoGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(1, this.facadeTwoGlazedPercentage);}
	}
	
	/**
	 * @return the facadeThreePercentageTotalGlazedArea
	 */
	public double getFacadeThreePercentageTotalGlazedArea() {
		return functions.roundDecimal(facadeThreePercentageTotalGlazedArea, dpPercentage);
	}

	/**
	 * @param facadeThreePercentageTotalGlazedArea
	 *            the facadeThreePercentageTotalGlazedArea to set
	 */
	public void setFacadeThreePercentageTotalGlazedArea(double facadeThreePercentageTotalGlazedArea) {
		this.facadeThreePercentageTotalGlazedArea = facadeThreePercentageTotalGlazedArea;
		this.setFacadeThreeGlazedArea();
		notifier.fireValueChange("facadeThreePercentageTotalGlazedArea");
	}
	
	/**
	 * recalculate facadeThreePercentageTotalGlazedArea
	 */
	/*
	public void setFacadeThreePercentageTotalGlazedArea() {
		this.facadeThreePercentageTotalGlazedArea = (facadeThreeGlazedArea / totalGlazedArea * 100) ;
		this.setFacadeThreeGlazedArea();
		//this.checkGlazingDistribution(1);
		notifier.fireValueChange("facadeThreePercentageTotalGlazedArea");
	}
	*/
	
	/**
	 * @return the facadeThreeGlazedAreaLock
	 */
	public boolean isFacadeThreeGlazedAreaLock() {
		return facadeThreeGlazedAreaLock;
	}

	/**
	 * @param facadeThreeGlazedAreaLock the facadeThreeGlazedAreaLock to set
	 */
	public void setFacadeThreeGlazedAreaLock(
			boolean facadeThreeGlazedAreaLock) {
		this.facadeThreeGlazedAreaLock = facadeThreeGlazedAreaLock;
		this.setUnlockedFacades();
		notifier.fireValueChange("facadeThreeGlazedAreaLock");
		if (saveValues) {this.projectInstance.setFacadeGlazedAreaLock(2, this.facadeThreeGlazedAreaLock);}
	}

	/**
	 * @return the facadeThreeGlazedArea
	 */
	public double getFacadeThreeGlazedArea() {
		return functions.roundDecimal(facadeThreeGlazedArea, dpArea);
	}

	/**
	 * @return the facadeThreeWallArea
	 */
	public double getFacadeThreeWallArea() {
		return functions.roundDecimal(facadeThreeArea - facadeThreeGlazedArea, dpArea);
	}
	
	/**
	 * recalculate facadeThreeGlazedArea
	 */
	public void setFacadeThreeGlazedArea() {
		this.facadeThreeGlazedArea = Math.max(0, Math.min(facadeThreeArea, ((facadeThreeArea * facadeThreeGlazedPercentage / 100))));
		//this.facadeThreeGlazedArea = Math.max(0, Math.min(facadeThreeArea, ((totalGlazedArea * facadeThreePercentageTotalGlazedArea / 100))));
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		boolean savedLockState = this.facadeThreeGlazedAreaLock; // we need to do this so state is restored after changes 
		this.setFacadeThreeGlazedAreaLock(true);
		this.setTotalGlazedAreaDistributed();
		this.setFacadeThreeGlazedAreaLock(false); // must be unlocked before checking for overflow so we don't allocate more glazing than allowable
		this.checkFacadeOverflow();
		this.setFacadeThreeGlazedAreaLock(savedLockState);
		notifier.fireValueChange("facadeThreeGlazedArea");
	}

	/**
	 * recalculate facadeThreeGlazedArea from even distribution of solar loads
	 */
	public void setFacadeThreeGlazedAreaFromSolarLoads() {
		this.facadeThreeGlazedArea = (facadeThreeAvgDailySolarLoadPerFloor * storeys) / 
				(facadeThreeSolarTransmittance * facadeThreeAverageSolarLoad * facadeThreeShadingFactor * 
				( (1 / facadeThreeTypicalFloorPerimeterZoneArea) - 
				(facadeThreePercentageFrame / (100 * facadeThreeTypicalFloorPerimeterZoneArea)) ));
		//this.setFacadeThreeAvgDailySolarLoadPerFloor();
		//this.setFacadeThreeGlazedAreaLock(true);
		//this.setTotalGlazedAreaDistributed();
		//this.setFacadeThreeGlazedAreaLock(false);
		//this.checkFacadeOverflow();
		this.setFacadeThreeGlazedPercentage();
		notifier.fireValueChange("facadeThreeGlazedArea");
	}
	
	/**
	 * @return the facadeThreeGlazedPercentage
	 */
	public double getFacadeThreeGlazedPercentage() {
		return functions.roundDecimal(facadeThreeGlazedPercentage, dpPercentage);
	}

	/**
	 * recalculate facadeThreeGlazedPercentage
	 */
	public void setFacadeThreeGlazedPercentage() {
		this.facadeThreeGlazedPercentage = (facadeThreeGlazedArea
				/ facadeThreeArea * 100);
		this.setFacadeThreeTypicalFloorGlazedArea();
		this.setFacadeThreeGlazedArea();
		notifier.fireValueChange("facadeThreeGlazedPercentage");
		this.facadeThreeGlazedPercentageValue = this.facadeThreeGlazedPercentage;
		notifier.fireValueChange("facadeThreeGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(2, this.facadeThreeGlazedPercentage);}
	}

	/**
	 * @param facadeThreeGlazedPercentage
	 *            the facadeThreeGlazedPercentage to set
	 */
	public void setFacadeThreeGlazedPercentage(double facadeThreeGlazedPercentage) {
		//if (unlockedFacades == 1 && !checkLock)
		//	facadeThreeGlazedPercentage = this.facadeThreeGlazedPercentage;
		//else
			this.facadeThreeGlazedPercentage = facadeThreeGlazedPercentage;
		this.setFacadeThreeTypicalFloorGlazedArea();
		this.setFacadeThreePercentageTotalGlazedArea(Math.max(0, Math.min(100, (facadeThreeArea / totalGlazedArea * 100)) * facadeThreeGlazedPercentage / 100));
		notifier.fireValueChange("facadeThreeGlazedPercentage");
		this.facadeThreeGlazedPercentageValue = this.facadeThreeGlazedPercentage;
		notifier.fireValueChange("facadeThreeGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(2, this.facadeThreeGlazedPercentage);}
	}
	
	/**
	 * @return the facadeFourPercentageTotalGlazedArea
	 */
	public double getFacadeFourPercentageTotalGlazedArea() {
		return functions.roundDecimal(facadeFourPercentageTotalGlazedArea, dpPercentage);
	}

	/**
	 * @param facadeFourPercentageTotalGlazedArea
	 *            the facadeFourPercentageTotalGlazedArea to set
	 */
	public void setFacadeFourPercentageTotalGlazedArea(double facadeFourPercentageTotalGlazedArea) {
		this.facadeFourPercentageTotalGlazedArea = facadeFourPercentageTotalGlazedArea;
		this.setFacadeFourGlazedArea();
		notifier.fireValueChange("facadeFourPercentageTotalGlazedArea");
	}
	
	/**
	 * recalculate facadeFourPercentageTotalGlazedArea
	 */
	/*
	public void setFacadeFourPercentageTotalGlazedArea() {
		this.facadeFourPercentageTotalGlazedArea = (facadeFourGlazedArea / totalGlazedArea * 100) ;
		this.setFacadeFourGlazedArea();
		//this.checkGlazingDistribution(1);
		notifier.fireValueChange("facadeFourPercentageTotalGlazedArea");
	}
	*/
	
	/**
	 * @return the facadeFourGlazedAreaLock
	 */
	public boolean isFacadeFourGlazedAreaLock() {
		return facadeFourGlazedAreaLock;
	}

	/**
	 * @param facadeFourGlazedAreaLock the facadeFourGlazedAreaLock to set
	 */
	public void setFacadeFourGlazedAreaLock(
			boolean facadeFourGlazedAreaLock) {
		this.facadeFourGlazedAreaLock = facadeFourGlazedAreaLock;
		this.setUnlockedFacades();
		notifier.fireValueChange("facadeFourGlazedAreaLock");
		if (saveValues) {this.projectInstance.setFacadeGlazedAreaLock(3, this.facadeFourGlazedAreaLock);}
	}

	/**
	 * @return the facadeFourGlazedArea
	 */
	public double getFacadeFourGlazedArea() {
		return functions.roundDecimal(facadeFourGlazedArea, dpArea);
	}

	/**
	 * @return the facadeFourWallArea
	 */
	public double getFacadeFourWallArea() {
		return functions.roundDecimal(facadeFourArea - facadeFourGlazedArea, dpArea);
	}
	
	/**
	 * recalculate facadeFourGlazedArea
	 */
	public void setFacadeFourGlazedArea() {
		this.facadeFourGlazedArea = Math.max(0, Math.min(facadeFourArea, ((facadeFourArea * facadeFourGlazedPercentage / 100))));
		//this.facadeFourGlazedArea = Math.max(0, Math.min(facadeFourArea, ((totalGlazedArea * facadeFourPercentageTotalGlazedArea / 100))));
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		boolean savedLockState = this.facadeFourGlazedAreaLock;
		this.setFacadeFourGlazedAreaLock(true);
		this.setTotalGlazedAreaDistributed();
		this.setFacadeFourGlazedAreaLock(false);
		this.checkFacadeOverflow();
		this.setFacadeFourGlazedAreaLock(savedLockState);
		notifier.fireValueChange("facadeFourGlazedArea");
	}
	
	/**
	 * recalculate facadeFourGlazedArea from even distribution of solar loads
	 */
	public void setFacadeFourGlazedAreaFromSolarLoads() {
		this.facadeFourGlazedArea = (facadeFourAvgDailySolarLoadPerFloor * storeys) / 
				(facadeFourSolarTransmittance * facadeFourAverageSolarLoad * facadeFourShadingFactor * 
				( (1 / facadeFourTypicalFloorPerimeterZoneArea) - 
				(facadeFourPercentageFrame / (100 * facadeFourTypicalFloorPerimeterZoneArea)) ));
		//this.setFacadeFourAvgDailySolarLoadPerFloor();
		//this.setFacadeFourGlazedAreaLock(true);
		//this.setTotalGlazedAreaDistributed();
		//this.setFacadeFourGlazedAreaLock(false);
		//this.checkFacadeOverflow();
		this.setFacadeFourGlazedPercentage();
		notifier.fireValueChange("facadeFourGlazedArea");
	}
	
	/**
	 * @return the facadeFourGlazedPercentage
	 */
	public double getFacadeFourGlazedPercentage() {
		return functions.roundDecimal(facadeFourGlazedPercentage, dpPercentage);
	}

	/**
	 * @param facadeFourGlazedPercentage
	 *            the facadeFourGlazedPercentage to set
	 */
	public void setFacadeFourGlazedPercentage() {
		this.facadeFourGlazedPercentage = (facadeFourGlazedArea
				/ facadeFourArea * 100);
		this.setFacadeFourTypicalFloorGlazedArea();
		this.setFacadeFourGlazedArea();
		notifier.fireValueChange("facadeFourGlazedPercentage");
		this.facadeFourGlazedPercentageValue = this.facadeFourGlazedPercentage;
		notifier.fireValueChange("facadeFourGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(3, this.facadeFourGlazedPercentage);}
	}

	/**
	 * @param facadeFourGlazedPercentage
	 *            the facadeFourGlazedPercentage to set
	 */
	public void setFacadeFourGlazedPercentage(double facadeFourGlazedPercentage) {
		//if (unlockedFacades == 1 && !checkLock)
		//	facadeFourGlazedPercentage = this.facadeFourGlazedPercentage;
		//else
			this.facadeFourGlazedPercentage = facadeFourGlazedPercentage;
		this.setFacadeFourTypicalFloorGlazedArea();
		this.setFacadeFourPercentageTotalGlazedArea(Math.max(0, Math.min(100, (facadeFourArea / totalGlazedArea * 100)) * facadeFourGlazedPercentage / 100));
		notifier.fireValueChange("facadeFourGlazedPercentage");
		this.facadeFourGlazedPercentageValue = this.facadeFourGlazedPercentage;
		notifier.fireValueChange("facadeFourGlazedPercentageValue");
		this.setGlazingSeriesData(); // we need this updated too
		if (saveValues) {this.projectInstance.setFacadeGlazedPercentage(3, this.facadeFourGlazedPercentage);}
	}
	
	// END - Glazing Distribution Getters & Setters

	// START - Solar Shading Getters & Setters

	/**
	 * @return the facadeOneAverageSolarLoad
	 */
	public double getFacadeOneAverageSolarLoad() {
		return functions.roundDecimal(facadeOneAverageSolarLoad, dpUvalue);
	}

	/**
	 * @param facadeOneAverageSolarLoad
	 *            the facadeOneAverageSolarLoad to set
	 */
	/*
	public void setFacadeOneAverageSolarLoad(double facadeOneAverageSolarLoad) {
		this.facadeOneAverageSolarLoad = facadeOneAverageSolarLoad;
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeOneAverageSolarLoad");
	}
*/
	/**
	 * @return the facadeOnePercentageFrame
	 */
	public double getFacadeOnePercentageFrame() {
		return functions.roundDecimal(facadeOnePercentageFrame, dpPercentage);
	}

	/**
	 * @param facadeOnePercentageFrame
	 *            the facadeOnePercentageFrame to set
	 */
	public void setFacadeOnePercentageFrame(double facadeOnePercentageFrame) {
		this.facadeOnePercentageFrame = facadeOnePercentageFrame;
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeOnePercentageFrame");
		if (saveValues) {this.projectInstance.setFacadePercentageFrame(0, this.facadeOnePercentageFrame);}
	}

	/**
	 * @return the facadeOneSolarTransmittance
	 */
	public double getFacadeOneSolarTransmittance() {
		return functions.roundDecimal(facadeOneSolarTransmittance, dpFactor);
	}

	/**
	 * @param facadeOneSolarTransmittance
	 *            the facadeOneSolarTransmittance to set
	 */
	public void setFacadeOneSolarTransmittance(
			double facadeOneSolarTransmittance) {
		this.facadeOneSolarTransmittance = facadeOneSolarTransmittance;
		this.facadeOneSolarTransmittanceRO = facadeOneSolarTransmittance;
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeOneSolarTransmittance");
		notifier.fireValueChange("facadeOneSolarTransmittanceRO");
	}

	/**
	 * @return the facadeOneShadingFactor
	 */
	public double getFacadeOneShadingFactor() {
		return functions.roundDecimal(facadeOneShadingFactor, dpFactor);
	}

	/**
	 * @param facadeOneShadingFactor
	 *            the facadeOneShadingFactor to set
	 */
	public void setFacadeOneShadingFactor(double facadeOneShadingFactor) {
		this.facadeOneShadingFactor = facadeOneShadingFactor;
		this.facadeOneShadingFactorRO = facadeOneShadingFactor;
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeOneShadingFactor");
		notifier.fireValueChange("facadeOneShadingFactorRO");
	}

	/**
	 * @return the facadeTwoAverageSolarLoad
	 */
	public double getFacadeTwoAverageSolarLoad() {
		return functions.roundDecimal(facadeTwoAverageSolarLoad, dpUvalue);
	}

	/**
	 * @param facadeTwoAverageSolarLoad
	 *            the facadeTwoAverageSolarLoad to set
	 */
	/*
	public void setFacadeTwoAverageSolarLoad(double facadeTwoAverageSolarLoad) {
		this.facadeTwoAverageSolarLoad = facadeTwoAverageSolarLoad;
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeTwoAverageSolarLoad");
	}
*/
	/**
	 * @return the facadeTwoPercentageFrame
	 */
	public double getFacadeTwoPercentageFrame() {
		return functions.roundDecimal(facadeTwoPercentageFrame, dpPercentage);
	}

	/**
	 * @param facadeTwoPercentageFrame
	 *            the facadeTwoPercentageFrame to set
	 */
	public void setFacadeTwoPercentageFrame(double facadeTwoPercentageFrame) {
		this.facadeTwoPercentageFrame = facadeTwoPercentageFrame;
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeTwoPercentageFrame");
		if (saveValues) {this.projectInstance.setFacadePercentageFrame(1, this.facadeTwoPercentageFrame);}
	}

	/**
	 * @return the facadeTwoSolarTransmittance
	 */
	public double getFacadeTwoSolarTransmittance() {
		return functions.roundDecimal(facadeTwoSolarTransmittance, dpFactor);
	}

	/**
	 * @param facadeTwoSolarTransmittance
	 *            the facadeTwoSolarTransmittance to set
	 */
	public void setFacadeTwoSolarTransmittance(
			double facadeTwoSolarTransmittance) {
		this.facadeTwoSolarTransmittance = facadeTwoSolarTransmittance;
		this.facadeTwoSolarTransmittanceRO = facadeTwoSolarTransmittance;
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeTwoSolarTransmittance");
		notifier.fireValueChange("facadeTwoSolarTransmittanceRO");
	}

	/**
	 * @return the facadeTwoShadingFactor
	 */
	public double getFacadeTwoShadingFactor() {
		return functions.roundDecimal(facadeTwoShadingFactor, dpFactor);
	}

	/**
	 * @param facadeTwoShadingFactor
	 *            the facadeTwoShadingFactor to set
	 */
	public void setFacadeTwoShadingFactor(double facadeTwoShadingFactor) {
		this.facadeTwoShadingFactor = facadeTwoShadingFactor;
		this.facadeTwoShadingFactorRO = facadeTwoShadingFactor;
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeTwoShadingFactor");
		notifier.fireValueChange("facadeTwoShadingFactorRO");
	}

	/**
	 * @return the facadeThreeAverageSolarLoad
	 */
	public double getFacadeThreeAverageSolarLoad() {
		return functions.roundDecimal(facadeThreeAverageSolarLoad, dpUvalue);
	}

	/**
	 * @param facadeThreeAverageSolarLoad
	 *            the facadeThreeAverageSolarLoad to set
	 */
	/*
	public void setFacadeThreeAverageSolarLoad(
			private double facadeThreeAverageSolarLoad) {
		this.facadeThreeAverageSolarLoad = facadeThreeAverageSolarLoad;
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeThreeAverageSolarLoad");
	}
*/
	/**
	 * @return the facadeThreePercentageFrame
	 */
	public double getFacadeThreePercentageFrame() {
		return functions.roundDecimal(facadeThreePercentageFrame, dpPercentage);
	}

	/**
	 * @param facadeThreePercentageFrame
	 *            the facadeThreePercentageFrame to set
	 */
	public void setFacadeThreePercentageFrame(double facadeThreePercentageFrame) {
		this.facadeThreePercentageFrame = facadeThreePercentageFrame;
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeThreePercentageFrame");
		if (saveValues) {this.projectInstance.setFacadePercentageFrame(2, this.facadeThreePercentageFrame);}
	}

	/**
	 * @return the facadeThreeSolarTransmittance
	 */
	public double getFacadeThreeSolarTransmittance() {
		return functions.roundDecimal(facadeThreeSolarTransmittance, dpFactor);
	}

	/**
	 * @param facadeThreeSolarTransmittance
	 *            the facadeThreeSolarTransmittance to set
	 */
	public void setFacadeThreeSolarTransmittance(
			double facadeThreeSolarTransmittance) {
		this.facadeThreeSolarTransmittance = facadeThreeSolarTransmittance;
		this.facadeThreeSolarTransmittanceRO = facadeThreeSolarTransmittance;
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeThreeSolarTransmittance");
		notifier.fireValueChange("facadeThreeSolarTransmittanceRO");
	}

	/**
	 * @return the facadeThreeShadingFactor
	 */
	public double getFacadeThreeShadingFactor() {
		return functions.roundDecimal(facadeThreeShadingFactor, dpFactor);
	}

	/**
	 * @param facadeThreeShadingFactor
	 *            the facadeThreeShadingFactor to set
	 */
	public void setFacadeThreeShadingFactor(double facadeThreeShadingFactor) {
		this.facadeThreeShadingFactor = facadeThreeShadingFactor;
		this.facadeThreeShadingFactorRO = facadeThreeShadingFactor;
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeThreeShadingFactor");
		notifier.fireValueChange("facadeThreeShadingFactorRO");
	}

	/**
	 * @return the facadeFourAverageSolarLoad
	 */
	public double getFacadeFourAverageSolarLoad() {
		return functions.roundDecimal(facadeFourAverageSolarLoad, dpUvalue);
	}

	/**
	 * @param facadeFourAverageSolarLoad
	 *            the facadeFourAverageSolarLoad to set
	 */
	/*
	public void setFacadeFourAverageSolarLoad(double facadeFourAverageSolarLoad) {
		this.facadeFourAverageSolarLoad = facadeFourAverageSolarLoad;
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeFourAverageSolarLoad");
	}
*/
	/**
	 * @return the facadeFourPercentageFrame
	 */
	public double getFacadeFourPercentageFrame() {
		return functions.roundDecimal(facadeFourPercentageFrame, dpPercentage);
	}

	/**
	 * @param facadeFourPercentageFrame
	 *            the facadeFourPercentageFrame to set
	 */
	public void setFacadeFourPercentageFrame(double facadeFourPercentageFrame) {
		this.facadeFourPercentageFrame = facadeFourPercentageFrame;
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeFourPercentageFrame");
		if (saveValues) {this.projectInstance.setFacadePercentageFrame(3, this.facadeFourPercentageFrame);}
	}

	/**
	 * @return the facadeFourSolarTransmittance
	 */
	public double getFacadeFourSolarTransmittance() {
		return functions.roundDecimal(facadeFourSolarTransmittance, dpFactor);
	}

	/**
	 * @param facadeFourSolarTransmittance
	 *            the facadeFourSolarTransmittance to set
	 */
	public void setFacadeFourSolarTransmittance(
			double facadeFourSolarTransmittance) {
		this.facadeFourSolarTransmittance = facadeFourSolarTransmittance;
		this.facadeFourSolarTransmittanceRO = facadeFourSolarTransmittance;
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeFourSolarTransmittance");
		notifier.fireValueChange("facadeFourSolarTransmittanceRO");
	}

	/**
	 * @return the facadeFourShadingFactor
	 */
	public double getFacadeFourShadingFactor() {
		return functions.roundDecimal(facadeFourShadingFactor, dpFactor);
	}

	/**
	 * @param facadeFourShadingFactor
	 *            the facadeFourShadingFactor to set
	 */
	public void setFacadeFourShadingFactor(double facadeFourShadingFactor) {
		this.facadeFourShadingFactor = facadeFourShadingFactor;
		this.facadeFourShadingFactorRO = facadeFourShadingFactor;
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeFourShadingFactor");
		notifier.fireValueChange("facadeFourShadingFactorRO");
	}

	// END - Solar Shading Getters & Setters

	// START - Surrounding Features Getters & Setters

	/**
	 * @return the facadeOneSurroundingFeaturesAverageHeight
	 */
	public double getFacadeOneSurroundingFeaturesAverageHeight() {
		return functions.roundDecimal(facadeOneSurroundingFeaturesAverageHeight,
				dpDistance);
	}

	/**
	 * @param facadeOneSurroundingFeaturesAverageHeight
	 *            the facadeOneSurroundingFeaturesAverageHeight to set
	 */
	public void setFacadeOneSurroundingFeaturesAverageHeight(
			double facadeOneSurroundingFeaturesAverageHeight) {
		this.facadeOneSurroundingFeaturesAverageHeight = facadeOneSurroundingFeaturesAverageHeight;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeOne, i);
		}
		notifier.fireValueChange("facadeOneSurroundingFeaturesAverageHeight");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageHeight(0, this.facadeOneSurroundingFeaturesAverageHeight);}
	}

	/**
	 * @return the facadeOneSurroundingFeaturesAverageDistance
	 */
	public double getFacadeOneSurroundingFeaturesAverageDistance() {
		return functions.roundDecimal(facadeOneSurroundingFeaturesAverageDistance,
				dpDistance);
	}

	/**
	 * @param facadeOneSurroundingFeaturesAverageDistance
	 *            the facadeOneSurroundingFeaturesAverageDistance to set
	 */
	public void setFacadeOneSurroundingFeaturesAverageDistance(
			double facadeOneSurroundingFeaturesAverageDistance) {
		this.facadeOneSurroundingFeaturesAverageDistance = facadeOneSurroundingFeaturesAverageDistance;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeOne, i);
		}
		notifier.fireValueChange("facadeOneSurroundingFeaturesAverageDistance");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageDistance(0, this.facadeOneSurroundingFeaturesAverageDistance);}
	}

	/**
	 * @return the facadeTwoSurroundingFeaturesAverageHeight
	 */
	public double getFacadeTwoSurroundingFeaturesAverageHeight() {
		return functions.roundDecimal(facadeTwoSurroundingFeaturesAverageHeight,
				dpDistance);
	}

	/**
	 * @param facadeTwoSurroundingFeaturesAverageHeight
	 *            the facadeTwoSurroundingFeaturesAverageHeight to set
	 */
	public void setFacadeTwoSurroundingFeaturesAverageHeight(
			double facadeTwoSurroundingFeaturesAverageHeight) {
		this.facadeTwoSurroundingFeaturesAverageHeight = facadeTwoSurroundingFeaturesAverageHeight;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeTwo, i);
		}
		notifier.fireValueChange("facadeTwoSurroundingFeaturesAverageHeight");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageHeight(1, this.facadeTwoSurroundingFeaturesAverageHeight);}
	}

	/**
	 * @return the facadeTwoSurroundingFeaturesAverageDistance
	 */
	public double getFacadeTwoSurroundingFeaturesAverageDistance() {
		return functions.roundDecimal(facadeTwoSurroundingFeaturesAverageDistance,
				dpDistance);
	}

	/**
	 * @param facadeTwoSurroundingFeaturesAverageDistance
	 *            the facadeTwoSurroundingFeaturesAverageDistance to set
	 */
	public void setFacadeTwoSurroundingFeaturesAverageDistance(
			double facadeTwoSurroundingFeaturesAverageDistance) {
		this.facadeTwoSurroundingFeaturesAverageDistance = facadeTwoSurroundingFeaturesAverageDistance;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeTwo, i);
		}
		notifier.fireValueChange("facadeTwoSurroundingFeaturesAverageDistance");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageDistance(1, this.facadeTwoSurroundingFeaturesAverageDistance);}
	}

	/**
	 * @return the facadeThreeSurroundingFeaturesAverageHeight
	 */
	public double getFacadeThreeSurroundingFeaturesAverageHeight() {
		return functions.roundDecimal(facadeThreeSurroundingFeaturesAverageHeight,
				dpDistance);
	}

	/**
	 * @param facadeThreeSurroundingFeaturesAverageHeight
	 *            the facadeThreeSurroundingFeaturesAverageHeight to set
	 */
	public void setFacadeThreeSurroundingFeaturesAverageHeight(
			double facadeThreeSurroundingFeaturesAverageHeight) {
		this.facadeThreeSurroundingFeaturesAverageHeight = facadeThreeSurroundingFeaturesAverageHeight;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeThree, i);
		}
		notifier.fireValueChange("facadeThreeSurroundingFeaturesAverageHeight");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageHeight(2, this.facadeOneSurroundingFeaturesAverageHeight);}
	}

	/**
	 * @return the facadeThreeSurroundingFeaturesAverageDistance
	 */
	public double getFacadeThreeSurroundingFeaturesAverageDistance() {
		return functions.roundDecimal(facadeThreeSurroundingFeaturesAverageDistance,
				dpDistance);
	}

	/**
	 * @param facadeThreeSurroundingFeaturesAverageDistance
	 *            the facadeThreeSurroundingFeaturesAverageDistance to set
	 */
	public void setFacadeThreeSurroundingFeaturesAverageDistance(
			double facadeThreeSurroundingFeaturesAverageDistance) {
		this.facadeThreeSurroundingFeaturesAverageDistance = facadeThreeSurroundingFeaturesAverageDistance;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeThree, i);
		}
		notifier.fireValueChange("facadeThreeSurroundingFeaturesAverageDistance");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageDistance(2, this.facadeThreeSurroundingFeaturesAverageDistance);}
	}

	/**
	 * @return the facadeFourSurroundingFeaturesAverageHeight
	 */
	public double getFacadeFourSurroundingFeaturesAverageHeight() {
		return functions.roundDecimal(facadeFourSurroundingFeaturesAverageHeight,
				dpDistance);
	}

	/**
	 * @param facadeFourSurroundingFeaturesAverageHeight
	 *            the facadeFourSurroundingFeaturesAverageHeight to set
	 */
	public void setFacadeFourSurroundingFeaturesAverageHeight(
			double facadeFourSurroundingFeaturesAverageHeight) {
		this.facadeFourSurroundingFeaturesAverageHeight = facadeFourSurroundingFeaturesAverageHeight;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeFour, i);
		}
		notifier.fireValueChange("facadeFourSurroundingFeaturesAverageHeight");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageHeight(3, this.facadeFourSurroundingFeaturesAverageHeight);}
	}

	/**
	 * @return the facadeFourSurroundingFeaturesAverageDistance
	 */
	public double getFacadeFourSurroundingFeaturesAverageDistance() {
		return functions.roundDecimal(facadeFourSurroundingFeaturesAverageDistance,
				dpDistance);
	}

	/**
	 * @param facadeFourSurroundingFeaturesAverageDistance
	 *            the facadeFourSurroundingFeaturesAverageDistance to set
	 */
	public void setFacadeFourSurroundingFeaturesAverageDistance(
			double facadeFourSurroundingFeaturesAverageDistance) {
		this.facadeFourSurroundingFeaturesAverageDistance = facadeFourSurroundingFeaturesAverageDistance;
//		this.setGroundFloorAngleY();
//		this.setFirstFloorAngleY();
//		this.setSecondFloorAngleY();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleY(facadeFour, i);
		}
		notifier.fireValueChange("facadeFourSurroundingFeaturesAverageDistance");
		if (saveValues) {this.projectInstance.setSurroundingFeaturesAverageDistance(3, this.facadeFourSurroundingFeaturesAverageDistance);}
	}

	// END - SurroundingFeatures Getters & Setters

	// START - Window Information Getters & Setters

//	/**
//	 * @return the groundFloorHeadHeight
//	 */
//	public double getGroundFloorHeadHeight() {
//		return functions.roundDecimal(groundFloorHeadHeight, dpDistance);
//	}
//
//	/**
//	 * @param groundFloorHeadHeight
//	 *            the groundFloorHeadHeight to set
//	 */
//	public void setGroundFloorHeadHeight(double groundFloorHeadHeight) {
//		this.groundFloorHeadHeight = groundFloorHeadHeight;
//		this.setGroundFloorAngleX();
//		this.setGroundFloorAngleY();
//		notifier.fireValueChange("groundFloorHeadHeight");
//	}
//
//	/**
//	 * @return the groundFloorCillHeight
//	 */
//	public double getGroundFloorCillHeight() {
//		return functions.roundDecimal(groundFloorCillHeight, dpDistance);
//	}
//
//	/**
//	 * @param groundFloorCillHeight
//	 *            the groundFloorCillHeight to set
//	 */
//	public void setGroundFloorCillHeight(double groundFloorCillHeight) {
//		this.groundFloorCillHeight = groundFloorCillHeight;
//		this.setGroundFloorAngleX();
//		this.setGroundFloorAngleY();
//		notifier.fireValueChange("groundFloorCillHeight");
//	}
//
//	/**
//	 * @return the groundFloorReveal
//	 */
//	public double getGroundFloorReveal() {
//		return functions.roundDecimal(groundFloorReveal, dpDistance);
//	}
//
//	/**
//	 * @param groundFloorReveal
//	 *            the groundFloorReveal to set
//	 */
//	public void setGroundFloorReveal(double groundFloorReveal) {
//		this.groundFloorReveal = groundFloorReveal;
//		this.setGroundFloorAngleY();
//		this.setGroundFloorAngleX();
//		notifier.fireValueChange("groundFloorReveal");
//	}
//
//	/**
//	 * @return the firstFloorHeadHeight
//	 */
//	public double getFirstFloorHeadHeight() {
//		return functions.roundDecimal(firstFloorHeadHeight, dpDistance);
//	}
//
//	/**
//	 * @param firstFloorHeadHeight
//	 *            the firstFloorHeadHeight to set
//	 */
//	public void setFirstFloorHeadHeight(double firstFloorHeadHeight) {
//		this.firstFloorHeadHeight = firstFloorHeadHeight;
//		this.setFirstFloorAngleX();
//		this.setFirstFloorAngleY();
//		notifier.fireValueChange("firstFloorHeadHeight");
//	}
//
//	/**
//	 * @return the firstFloorCillHeight
//	 */
//	public double getFirstFloorCillHeight() {
//		return functions.roundDecimal(firstFloorCillHeight, dpDistance);
//	}
//
//	/**
//	 * @param firstFloorCillHeight
//	 *            the firstFloorCillHeight to set
//	 */
//	public void setFirstFloorCillHeight(double firstFloorCillHeight) {
//		this.firstFloorCillHeight = firstFloorCillHeight;
//		this.setFirstFloorAngleX();
//		this.setFirstFloorAngleY();
//		notifier.fireValueChange("firstFloorCillHeight");
//	}
//
//	/**
//	 * @return the firstFloorReveal
//	 */
//	public double getFirstFloorReveal() {
//		return functions.roundDecimal(firstFloorReveal, dpDistance);
//	}
//
//	/**
//	 * @param firstFloorReveal
//	 *            the firstFloorReveal to set
//	 */
//	public void setFirstFloorReveal(double firstFloorReveal) {
//		this.firstFloorReveal = firstFloorReveal;
//		this.setFirstFloorAngleY();
//		this.setFirstFloorAngleX();
//		notifier.fireValueChange("firstFloorReveal");
//	}
//
//	/**
//	 * @return the secondFloorHeadHeight
//	 */
//	public double getSecondFloorHeadHeight() {
//		return functions.roundDecimal(secondFloorHeadHeight, dpDistance);
//	}
//
//	/**
//	 * @param secondFloorHeadHeight
//	 *            the secondFloorHeadHeight to set
//	 */
//	public void setSecondFloorHeadHeight(double secondFloorHeadHeight) {
//		this.secondFloorHeadHeight = secondFloorHeadHeight;
//		this.setSecondFloorAngleX();
//		this.setSecondFloorAngleY();
//		notifier.fireValueChange("secondFloorHeadHeight");
//	}
//
//	/**
//	 * @return the secondFloorCillHeight
//	 */
//	public double getSecondFloorCillHeight() {
//		return functions.roundDecimal(secondFloorCillHeight, dpDistance);
//	}
//
//	/**
//	 * @param secondFloorCillHeight
//	 *            the secondFloorCillHeight to set
//	 */
//	public void setSecondFloorCillHeight(double secondFloorCillHeight) {
//		this.secondFloorCillHeight = secondFloorCillHeight;
//		this.setSecondFloorAngleX();
//		this.setSecondFloorAngleY();
//		notifier.fireValueChange("secondFloorCillHeight");
//	}
//
//	/**
//	 * @return the secondFloorReveal
//	 */
//	public double getSecondFloorReveal() {
//		return functions.roundDecimal(secondFloorReveal, dpDistance);
//	}
//
//	/**
//	 * @param secondFloorReveal
//	 *            the secondFloorReveal to set
//	 */
//	public void setSecondFloorReveal(double secondFloorReveal) {
//		this.secondFloorReveal = secondFloorReveal;
//		this.setSecondFloorAngleY();
//		this.setSecondFloorAngleX();
//		notifier.fireValueChange("secondFloorReveal");
//	}

	// END - Window Information Getters & Setters

	// START - Vertical Angle of Sky Information Getters & Setters

//	/**
//	 * @return the groundFloorAngleY
//	 */
//	public double getGroundFloorAngleY() {
//		return groundFloorAngleY;
//	}
//
//	/**
//	 * recalculate groundFloorAngleY
//	 */
//	public void setGroundFloorAngleY() {
//		double calc = (facadeOneSurroundingFeaturesAverageHeight - ((groundFloorCillHeight + (groundFloorHeadHeight - groundFloorCillHeight) / 2) + (0 * floorToFloor)))
//				/ (facadeOneSurroundingFeaturesAverageDistance + groundFloorReveal);
//		this.groundFloorAngleY = (Math.atan(calc) * 180 / Math.PI);
//		this.setGroundFloorAngleZ();
//		notifier.fireValueChange("groundFloorAngleY");
//	}
	
	/**
	 * @return the facadeFloorVertAngleY
	 */
	public double getFloorAngleY(int facadeNum, int floorNum) {
		double returnVal = 0.0d;
		switch (facadeNum) {
			case facadeOne:
				returnVal = facadeOneVertAngleY[floorNum][0];
				break;
			case facadeTwo:
				returnVal = facadeTwoVertAngleY[floorNum][0];
				break;
			case facadeThree:
				returnVal = facadeThreeVertAngleY[floorNum][0];
				break;
			case facadeFour:
				returnVal = facadeFourVertAngleY[floorNum][0];
				break;
		}
		return returnVal;
	}
	
	/**
	 * set the facadeFloorVertAngleY
	 */
	public void setFloorAngleY(int facadeNum, int floorNum) {
		double tempCalc = 0.0d;
		switch (facadeNum) {
			case facadeOne:
				tempCalc = (facadeOneSurroundingFeaturesAverageHeight -	((facadeOneWindowCH[floorNum] + (facadeOneWindowHH[floorNum] - facadeOneWindowCH[floorNum]) / 2) + (floorNum * floorToFloor)))
								/ (facadeOneSurroundingFeaturesAverageDistance + facadeOneWindowRV[floorNum]);
				this.facadeOneVertAngleY[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				if (debug) { debugSetFloorFloorAngleY(floorNum); }
				break;
			case facadeTwo:
				tempCalc = (facadeTwoSurroundingFeaturesAverageHeight -	((facadeTwoWindowCH[floorNum] + (facadeTwoWindowHH[floorNum] - facadeTwoWindowCH[floorNum]) / 2) + (floorNum * floorToFloor)))
								/ (facadeTwoSurroundingFeaturesAverageDistance + facadeTwoWindowRV[floorNum]);
				this.facadeTwoVertAngleY[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				break;
			case facadeThree:
				tempCalc = (facadeThreeSurroundingFeaturesAverageHeight - ((facadeThreeWindowCH[floorNum] + (facadeThreeWindowHH[floorNum] - facadeThreeWindowCH[floorNum]) / 2) + (floorNum * floorToFloor)))
								/ (facadeThreeSurroundingFeaturesAverageDistance + facadeThreeWindowRV[floorNum]);
				this.facadeThreeVertAngleY[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				break;
			case facadeFour:
				tempCalc = (facadeFourSurroundingFeaturesAverageHeight - ((facadeFourWindowCH[floorNum] + (facadeFourWindowHH[floorNum] - facadeFourWindowCH[floorNum]) / 2) + (floorNum * floorToFloor)))
								/ (facadeFourSurroundingFeaturesAverageDistance + facadeFourWindowRV[floorNum]);
				this.facadeFourVertAngleY[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				break;
		}
		this.setFloorAngleZ(facadeNum, floorNum);
	}

	public void debugSetFloorFloorAngleY(int floorNum) {
		System.out.printf("   Set Y | floor: %s\t| %s\t| %s\t| %s\t| %s\t| %s\t| %s\t| %s\n",	
				floorNum,
				facadeOneVertAngleY[floorNum][0],
				facadeOneSurroundingFeaturesAverageHeight,
				facadeOneSurroundingFeaturesAverageDistance,
				floorToFloor,
				facadeOneWindowHH[floorNum],
				facadeOneWindowCH[floorNum],
				facadeOneWindowRV[floorNum]
			);
	}
	
//	/**
//	 * @return the groundFloorAngleX
//	 */
//	public double getGroundFloorAngleX() {
//		return groundFloorAngleX;
//	}
//
//	/**
//	 * recalculate groundFloorAngleX
//	 */
//	public void setGroundFloorAngleX() {
//		double calc = (groundFloorReveal + canopyOverhangHorizontalDepth) / ((groundFloorHeadHeight - groundFloorCillHeight) / 2);
//		this.groundFloorAngleX = (Math.atan(calc) * 180 / Math.PI);
//		this.setGroundFloorAngleZ();
//		notifier.fireValueChange("groundFloorAngleX");
//	}
	
	/**
	 * @return the facadeFloorVertAngleX
	 */
	public double getFloorAngleX(int facadeNum, int floorNum) {
		double returnVal = 0.0d;
		switch (facadeNum) {
			case facadeOne:
				returnVal = facadeOneVertAngleX[floorNum][0];
				break;
			case facadeTwo:
				returnVal = facadeTwoVertAngleX[floorNum][0];
				break;
			case facadeThree:
				returnVal = facadeThreeVertAngleX[floorNum][0];
				break;
			case facadeFour:
				returnVal = facadeFourVertAngleX[floorNum][0];
				break;
		}
		return returnVal;
	}
	
	/**
	 * set the facadeFloorVertAngleX
	 */
	//TODO: canopyOverhangHorizontalDepth should not be fixed
	public void setFloorAngleX(int facadeNum, int floorNum) {
		double tempCalc = 0.0d;
		switch (facadeNum) {
			case facadeOne:
				tempCalc = (facadeOneWindowRV[floorNum] + facadeOneWindowShadingDepth) / ((facadeOneWindowHH[floorNum] - facadeOneWindowCH[floorNum]) / 2);
				this.facadeOneVertAngleX[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				if (debug) { debugSetFloorFloorAngleX(floorNum); }
				break;
			case facadeTwo:
				tempCalc = (facadeTwoWindowRV[floorNum] + facadeTwoWindowShadingDepth) / ((facadeTwoWindowHH[floorNum] - facadeTwoWindowCH[floorNum]) / 2);
				this.facadeTwoVertAngleX[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				break;
			case facadeThree:
				tempCalc = (facadeThreeWindowRV[floorNum] + facadeThreeWindowShadingDepth) / ((facadeThreeWindowHH[floorNum] - facadeThreeWindowCH[floorNum]) / 2);
				this.facadeThreeVertAngleX[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				break;
			case facadeFour:
				tempCalc = (facadeFourWindowRV[floorNum] + facadeFourWindowShadingDepth) / ((facadeFourWindowHH[floorNum] - facadeFourWindowCH[floorNum]) / 2);
				this.facadeFourVertAngleX[floorNum][0] = (Math.atan(tempCalc) * 180 / Math.PI);
				break;
		}
		this.setFloorAngleZ(facadeNum, floorNum);
	}
	
	public void debugSetFloorFloorAngleX(int floorNum) {
		System.out.printf("   Set X | floor: %s\t| %s\t| %s\t| %s\t| %s\t| %s\n",	
				floorNum,
				facadeOneVertAngleX[floorNum][0],
				facadeOneWindowHH[floorNum],
				facadeOneWindowCH[floorNum],
				facadeOneWindowRV[floorNum],
				canopyOverhangHorizontalDepth
			);
	}
	
//	/**
//	 * @return the groundFloorAngleZ
//	 */
//	public double getGroundFloorAngleZ() {
//		return groundFloorAngleZ;
//	}
//
//	/**
//	 * recalculate groundFloorAngleZ
//	 */
//	public void setGroundFloorAngleZ() {
//		this.groundFloorAngleZ = (90 - (groundFloorAngleX + Math.max(groundFloorAngleY, 0)));
//		this.setAverageGroundFloorDesignDaylightFactor();
//		notifier.fireValueChange("groundFloorAngleZ");
//	}

	/**
	 * @return the facadeVertAngleZ
	 */
	public double getFloorAngleZ(int facadeNum, int floorNum) {
		double returnVal = 0.0d;
		switch (facadeNum) {
			case facadeOne:
				returnVal = facadeOneVertAngleZ[floorNum][0];
				break;
			case facadeTwo:
				returnVal = facadeTwoVertAngleZ[floorNum][0];
				break;
			case facadeThree:
				returnVal = facadeThreeVertAngleZ[floorNum][0];
				break;
			case facadeFour:
				returnVal = facadeFourVertAngleZ[floorNum][0];
				break;
		}
		return returnVal;
	}
	
	/**
	 * set the facadeFloorVertAngleZ
	 */
	//TODO: canopyOverhangHorizontalDepth should not be fixed
	public void setFloorAngleZ(int facadeNum, int floorNum) {
		switch (facadeNum) {
			case facadeOne:
				this.facadeOneVertAngleZ[floorNum][0] = (90 - (this.facadeOneVertAngleX[floorNum][0] + Math.max(this.facadeOneVertAngleY[floorNum][0], 0)));
				break;
			case facadeTwo:
				this.facadeTwoVertAngleZ[floorNum][0] = (90 - (this.facadeTwoVertAngleX[floorNum][0] + Math.max(this.facadeTwoVertAngleY[floorNum][0], 0)));
				break;
			case facadeThree:
				this.facadeThreeVertAngleZ[floorNum][0] = (90 - (this.facadeThreeVertAngleX[floorNum][0] + Math.max(this.facadeThreeVertAngleY[floorNum][0], 0)));
				break;
			case facadeFour:
				this.facadeFourVertAngleZ[floorNum][0] = (90 - (this.facadeFourVertAngleX[floorNum][0] + Math.max(this.facadeFourVertAngleY[floorNum][0], 0)));
				break;
		}
		this.setFloorAverageDesignDaylightFactor(facadeNum, floorNum);
	}
	
	/**
	 * calculate the design daylight factor
	 */
	public void setFloorAverageDesignDaylightFactor(int facadeNum, int floorNum) {
		switch (facadeNum) {
			case facadeOne:
				this.facadeOneAverageDesignDaylightFactor[floorNum][0] = (facadeOneDiffuseTransmittanceValue 
					* facadeOneTypicalFloorGlazedArea * facadeOneVertAngleZ[floorNum][0] * maintenanceFactorValue)
					/ (areaOfInternalSurfaces * (1 - (facadeOneAverageReflectanceOfInteriorSurfacesValue * facadeOneAverageReflectanceOfInteriorSurfacesValue)));
				if (debug) { debugSetFloorAverageDesignDaylightFactor(floorNum); }
				break;
			case facadeTwo:
				this.facadeTwoAverageDesignDaylightFactor[floorNum][0] = (facadeTwoDiffuseTransmittanceValue 
					* facadeTwoTypicalFloorGlazedArea * facadeTwoVertAngleZ[floorNum][0] * maintenanceFactorValue)
					/ (areaOfInternalSurfaces * (1 - (facadeTwoAverageReflectanceOfInteriorSurfacesValue * facadeTwoAverageReflectanceOfInteriorSurfacesValue)));
				break;
			case facadeThree:
				this.facadeThreeAverageDesignDaylightFactor[floorNum][0] = (facadeThreeDiffuseTransmittanceValue 
					* facadeThreeTypicalFloorGlazedArea * facadeThreeVertAngleZ[floorNum][0] * maintenanceFactorValue)
					/ (areaOfInternalSurfaces * (1 - (facadeThreeAverageReflectanceOfInteriorSurfacesValue * facadeThreeAverageReflectanceOfInteriorSurfacesValue)));
				break;
			case facadeFour:
				this.facadeFourAverageDesignDaylightFactor[floorNum][0] = (facadeFourDiffuseTransmittanceValue 
					* facadeFourTypicalFloorGlazedArea * facadeFourVertAngleZ[floorNum][0] * maintenanceFactorValue)
					/ (areaOfInternalSurfaces * (1 - (facadeFourAverageReflectanceOfInteriorSurfacesValue * facadeFourAverageReflectanceOfInteriorSurfacesValue)));
				break;
		}
		this.setDaylightingSeriesData();
	}
	
	public void debugSetFloorAverageDesignDaylightFactor(int floorNum) {
		System.out.printf("Avg. DDF | floor: %s\t| %s\t| %s\t| %s\t| %s\t| %s\t| %s\t| %s\t| %s\t| %s\n",	
				floorNum,
				facadeOneAverageDesignDaylightFactor[floorNum][0],
				facadeOneVertAngleX[floorNum][0],
				facadeOneVertAngleY[floorNum][0],
				facadeOneVertAngleZ[floorNum][0],
				facadeOneDiffuseTransmittanceValue,
				facadeOneTypicalFloorGlazedArea,
				maintenanceFactorValue,
				areaOfInternalSurfaces,
				facadeOneAverageReflectanceOfInteriorSurfacesValue
			);
	}
	
//	/**
//	 * @return the firstFloorAngleY
//	 */
//	public double getFirstFloorAngleY() {
//		return firstFloorAngleY;
//	}
//
//	/**
//	 * recalculate firstFloorAngleY
//	 */
//	public void setFirstFloorAngleY() { // + (1 * floorToFloor))) 1 is floor number
//		double calc = (facadeOneSurroundingFeaturesAverageHeight - ((firstFloorCillHeight + (firstFloorHeadHeight - firstFloorCillHeight) / 2) + (1 * floorToFloor)))
//				/ (facadeOneSurroundingFeaturesAverageDistance + firstFloorReveal);
//		this.firstFloorAngleY = (Math.atan(calc) * 180 / Math.PI);
//		this.setFirstFloorAngleZ();
//		notifier.fireValueChange("firstFloorAngleY");
//	}

//	/**
//	 * @return the firstFloorAngleZ
//	 */
//	public double getFirstFloorAngleZ() {
//		return firstFloorAngleZ;
//	}
//
//	/**
//	 * @return the firstFloorAngleX
//	 */
//	public double getFirstFloorAngleX() {
//		return firstFloorAngleX;
//	}
//
//	/**
//	 * recalculate firstFloorAngleX
//	 */
//	public void setFirstFloorAngleX() {
//		double calc = (firstFloorReveal + canopyOverhangHorizontalDepth) / ((firstFloorHeadHeight - firstFloorCillHeight) / 2);
//		this.firstFloorAngleX = Math.atan(calc)	* 180 / Math.PI;
//		this.setFirstFloorAngleZ();
//		notifier.fireValueChange("firstFloorAngleX");
//	}
//	
//	/**
//	 * recalculate firstFloorAngleZ
//	 */
//	public void setFirstFloorAngleZ() {
//		this.firstFloorAngleZ = (90 - (firstFloorAngleX + Math.max(firstFloorAngleY, 0)));
//		this.setAverageFirstFloorDesignDaylightFactor();
//		notifier.fireValueChange("firstFloorAngleZ");
//	}
//
//	/**
//	 * @return the secondFloorAngleY
//	 */
//	public double getSecondFloorAngleY() {
//		return secondFloorAngleY;
//	}
//
//	/**
//	 * recalculate secondFloorAngleY
//	 */
//	public void setSecondFloorAngleY() {
//		double calc = (facadeOneSurroundingFeaturesAverageHeight - ((secondFloorCillHeight + (secondFloorHeadHeight - secondFloorCillHeight) / 2) + (2 * floorToFloor)))
//				/ (facadeOneSurroundingFeaturesAverageDistance + secondFloorReveal);
//		this.secondFloorAngleY = (Math.atan(calc) * 180 / Math.PI);
//		this.setSecondFloorAngleZ();
//		notifier.fireValueChange("secondFloorAngleY");
//	}
//
//	/**
//	 * @return the secondFloorAngleX
//	 */
//	public double getSecondFloorAngleX() {
//		return secondFloorAngleX;
//	}
//
//	/**
//	 * recalculate secondFloorAngleX
//	 */
//	public void setSecondFloorAngleX() {
//		double calc = (secondFloorReveal + canopyOverhangHorizontalDepth) / ((secondFloorHeadHeight - secondFloorCillHeight) / 2);
//		this.secondFloorAngleX = (Math.atan(calc) * 180 / Math.PI);
//		this.setSecondFloorAngleZ();
//		notifier.fireValueChange("secondFloorAngleX");
//	}
//	
//	/**
//	 * @return the secondFloorAngleZ
//	 */
//	public double getSecondFloorAngleZ() {
//		return secondFloorAngleZ;
//	}
//
//	/**
//	 * recalculate secondFloorAngleZ
//	 */
//	public void setSecondFloorAngleZ() {
//		this.secondFloorAngleZ = (90 - (secondFloorAngleX + Math.max(secondFloorAngleY, 0)));
//		this.setAverageSecondFloorDesignDaylightFactor();
//		notifier.fireValueChange("secondFloorAngleZ");
//	}

	// END - Vertical Angle of Sky Information Getters & Setters

	// START - Max Average U-values Getters & Setters

	/**
	 * @return the maxAverageUvalueTotal
	 */
	public double getMaxAverageUvalueTotal() {
		return functions.roundDecimal(maxAverageUvalueTotal, dpUvalue);
	}

	/**
	 * set the maxAverageUvalueTotal
	 */
	public void setMaxAverageUvalueTotal() {
		this.maxAverageUvalueTotal = ((0.24 + 0.19 * (volume / heatLossElementsArea)));
		this.setMaxAverageUvalueFacade();
		notifier.fireValueChange("maxAverageUvalueTotal");
	}

	/**
	 * @param maxAverageUvalueTotal
	 *            the maxAverageUvalueTotal to set
	 */
	/*
	public void setMaxAverageUvalueTotal(double maxAverageUvalueTotal) {
		this.maxAverageUvalueTotal = maxAverageUvalueTotal;
		this.setMaxAverageUvalueFacade();
		notifier.fireValueChange("maxAverageUvalueTotal");
	}
	*/
	
	/**
	 * @return the maxAverageUvalueFacade
	 */
	public double getMaxAverageUvalueFacade() {
		return functions.roundDecimal(maxAverageUvalueFacade, dpUvalue);
	}
	
	/**
	 * @param maxAverageUvalueFacade
	 *            the maxAverageUvalueFacade to set
	 */
	public void setMaxAverageUvalueFacade() {
		this.maxAverageUvalueFacade = (((heatLossElementsArea * maxAverageUvalueTotal) / totalFacadeArea) - ((roofAndGroundFloorArea * averageUvalueRoofAndFloor) / totalFacadeArea));
		this.setFacadePerformance(maxAverageUvalueFacade);
		notifier.fireValueChange("maxAverageUvalueFacade");
	}

	/**
	 * @param maxAverageUvalueTotal
	 *            the maxAverageUvalueTotal to set
	 */
	/*
	public void setMaxAverageUvalueFacade(double maxAverageUvalueFacade) {
		this.maxAverageUvalueFacade = maxAverageUvalueFacade;
		this.setMaxPercentageGlazing();
		notifier.fireValueChange("maxAverageUvalueFacade");
	}
	*/
	
	/**
	 * @return the facadePerformance
	 */
	public double getFacadePerformance() {
		double toReturn = this.maxAverageUvalueFacade;
		if (facadePerformance != null)
			toReturn = facadePerformance;
		return functions.roundDecimal(toReturn, dpUvalue);
	}

	/**
	 * @return the facadePerformance
	 * 
	 * We have to account for null values
	 */
	public Double getSavedFacadePerformance() {
		return facadePerformance;
	}
	
	/**
	 * @param facadePerformance the facadePerformance to set
	 */
	public void setFacadePerformance(double facadePerformance) {
		if (!(facadePerformance >= 0))
			return;
		// The below if statement is to avoid loss of precision
		// due to rounding of values when set via a slider
		if (facadePerformance == this.getMaxAverageUvalueFacade())
			this.facadePerformance = maxAverageUvalueFacade;
		else
			this.facadePerformance = facadePerformance;
		this.setMaxPercentageGlazing();
		this.setFacadePerformanceValue();
		notifier.fireValueChange("facadePerformance");
		if (saveValues) {this.projectInstance.setFacadePerformance(this.facadePerformance);}
	}
	
	// END - Max Average U-values Getters & Setters

	// START - Average Daily Solar Load per Floor Getters & Setters

	/**
	 * @return the facadePerformanceValue
	 */
	public Double getFacadePerformanceValue() {
		return functions.roundDecimal(facadePerformanceValue, dpUvalue);
	}

	/**
	 * @param facadePerformanceValue the facadePerformanceValue to set
	 */
	public void setFacadePerformanceValue() {
		this.facadePerformanceValue = this.facadePerformance;
		notifier.fireValueChange("facadePerformanceValue");
	}

	/**
	 * @return the facadeOneAvgDailySolarLoadPerFloor
	 */
	public double getFacadeOneAvgDailySolarLoadPerFloor() {
		return functions.roundDecimal(facadeOneAvgDailySolarLoadPerFloor, dpUvalue);
	}

	/**
	 * 
	 * @param facadeOneAvgDailySolarLoadPerFloor
	 *            the facadeOneAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeOneAvgDailySolarLoadPerFloor(
			double facadeOneAvgDailySolarLoadPerFloor) {
		this.facadeOneAvgDailySolarLoadPerFloor = facadeOneAvgDailySolarLoadPerFloor;
		this.setFacadeOneGlazedAreaFromSolarLoads();
		notifier.fireValueChange("facadeOneAvgDailySolarLoadPerFloor");
		this.facadeOneAvgDailySolarLoadPerFloorValue = this.facadeOneAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeOneAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}
	 
	/**
	 * @param facadeOneAvgDailySolarLoadPerFloor
	 *            the facadeOneAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeOneAvgDailySolarLoadPerFloor() {
		this.facadeOneAvgDailySolarLoadPerFloor = (((facadeOneGlazedArea / storeys)
				* facadeOneSolarTransmittance
				* ((100 - facadeOnePercentageFrame) / 100)
				* facadeOneAverageSolarLoad * facadeOneShadingFactor) / facadeOneTypicalFloorPerimeterZoneArea);
		this.setAverageDailySolarLoadPerFloorTotal();
		notifier.fireValueChange("facadeOneAvgDailySolarLoadPerFloor");
		this.facadeOneAvgDailySolarLoadPerFloorValue = this.facadeOneAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeOneAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}

	/**
	 * @return the facadeTwoAvgDailySolarLoadPerFloor
	 */
	public double getFacadeTwoAvgDailySolarLoadPerFloor() {
		return functions.roundDecimal(facadeTwoAvgDailySolarLoadPerFloor, dpUvalue);
	}

	/**
	 * 
	 * @param facadeTwoAvgDailySolarLoadPerFloor the
	 * facadeTwoAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeTwoAvgDailySolarLoadPerFloor(
			double facadeTwoAvgDailySolarLoadPerFloor) {
		this.facadeTwoAvgDailySolarLoadPerFloor = facadeTwoAvgDailySolarLoadPerFloor; 
		this.setFacadeTwoGlazedAreaFromSolarLoads();
		notifier.fireValueChange("facadeTwoAvgDailySolarLoadPerFloor");
		this.facadeTwoAvgDailySolarLoadPerFloorValue = this.facadeTwoAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeTwoAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}
	 
	/**
	 * @param facadeTwoAvgDailySolarLoadPerFloor
	 *            the facadeTwoAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeTwoAvgDailySolarLoadPerFloor() {
		this.facadeTwoAvgDailySolarLoadPerFloor = (((facadeTwoGlazedArea / storeys)
				* facadeTwoSolarTransmittance
				* ((100 - facadeTwoPercentageFrame) / 100)
				* facadeTwoAverageSolarLoad * facadeTwoShadingFactor) / facadeTwoTypicalFloorPerimeterZoneArea);
		this.setAverageDailySolarLoadPerFloorTotal();
		notifier.fireValueChange("facadeTwoAvgDailySolarLoadPerFloor");
		this.facadeTwoAvgDailySolarLoadPerFloorValue = this.facadeTwoAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeTwoAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}

	/**
	 * @return the facadeThreeAvgDailySolarLoadPerFloor
	 */
	public double getFacadeThreeAvgDailySolarLoadPerFloor() {
		return functions.roundDecimal(facadeThreeAvgDailySolarLoadPerFloor, dpUvalue);
	}

	/**
	 * 
	 * @param facadeTwoAvgDailySolarLoadPerFloor the
	 * facadeTwoAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeThreeAvgDailySolarLoadPerFloor(
			double facadeThreeAvgDailySolarLoadPerFloor) {
		this.facadeThreeAvgDailySolarLoadPerFloor = facadeThreeAvgDailySolarLoadPerFloor; 
		this.setFacadeThreeGlazedAreaFromSolarLoads();
		notifier.fireValueChange("facadeThreeAvgDailySolarLoadPerFloor");
		this.facadeThreeAvgDailySolarLoadPerFloorValue = this.facadeThreeAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeThreeAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}
	
	/**
	 * @param facadeThreeAvgDailySolarLoadPerFloor
	 *            the facadeThreeAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeThreeAvgDailySolarLoadPerFloor() {
		this.facadeThreeAvgDailySolarLoadPerFloor = (((facadeThreeGlazedArea / storeys)
				* facadeThreeSolarTransmittance
				* ((100 - facadeThreePercentageFrame) / 100)
				* facadeThreeAverageSolarLoad * facadeThreeShadingFactor) / facadeThreeTypicalFloorPerimeterZoneArea);
		this.setAverageDailySolarLoadPerFloorTotal();
		notifier.fireValueChange("facadeThreeAvgDailySolarLoadPerFloor");
		this.facadeThreeAvgDailySolarLoadPerFloorValue = this.facadeThreeAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeThreeAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}

	/**
	 * @return the facadeFourAvgDailySolarLoadPerFloor
	 */
	public double getFacadeFourAvgDailySolarLoadPerFloor() {
		return functions.roundDecimal(facadeFourAvgDailySolarLoadPerFloor, dpUvalue);
	}

	/**
	 * 
	 * @param facadeTwoAvgDailySolarLoadPerFloor the
	 * facadeTwoAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeFourAvgDailySolarLoadPerFloor(
			double facadeFourAvgDailySolarLoadPerFloor) {
		this.facadeFourAvgDailySolarLoadPerFloor = facadeFourAvgDailySolarLoadPerFloor; 
		this.setFacadeFourGlazedAreaFromSolarLoads();
		notifier.fireValueChange("facadeFourAvgDailySolarLoadPerFloor");
		this.facadeFourAvgDailySolarLoadPerFloorValue = this.facadeFourAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeFourAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}
	
	/**
	 * @param facadeFourAvgDailySolarLoadPerFloor
	 *            the facadeFourAvgDailySolarLoadPerFloor to set
	 */
	public void setFacadeFourAvgDailySolarLoadPerFloor() {
		this.facadeFourAvgDailySolarLoadPerFloor = (((facadeFourGlazedArea / storeys)
				* facadeFourSolarTransmittance
				* ((100 - facadeFourPercentageFrame) / 100)
				* facadeFourAverageSolarLoad * facadeFourShadingFactor) / facadeFourTypicalFloorPerimeterZoneArea);
		this.setAverageDailySolarLoadPerFloorTotal();
		notifier.fireValueChange("facadeFourAvgDailySolarLoadPerFloor");
		this.facadeFourAvgDailySolarLoadPerFloorValue = this.facadeFourAvgDailySolarLoadPerFloor;
		notifier.fireValueChange("facadeFourAvgDailySolarLoadPerFloorValue");
		this.setHeatGainSeriesData();
	}
	
	/**
	 * @param facadeFourAvgDailySolarLoadPerFloor
	 *            the facadeFourAvgDailySolarLoadPerFloor to set
	 */
	public void getFacadeFourGlazedAreaViaSolarLoadPerFloor() {
		//System.out.println("Calcul: " + (facadeFourAvgDailySolarLoadPerFloor * storeys) / 
		//						(facadeFourSolarTransmittance * facadeFourAverageSolarLoad * facadeFourShadingFactor * 
		//						( (1 / facadeFourTypicalFloorPerimeterZoneArea) - 
		//						(facadeFourPercentageFrame / (100 * facadeFourTypicalFloorPerimeterZoneArea)) )));
		//System.out.println("Actual: " + this.facadeFourGlazedArea);
		
		//this.setAverageDailySolarLoadPerFloorTotal();
		//notifier.fireValueChange("facadeFourAvgDailySolarLoadPerFloor");
	}

	/**
	 * @return the averageDailySolarLoadPerFloorTotal
	 */
	public double getAverageDailySolarLoadPerFloorTotal() {
		return functions.roundDecimal(averageDailySolarLoadPerFloorTotal, dpUvalue);
	}

	/**
	 * set the averageDailySolarLoadPerFloorTotal
	 */
	public void setAverageDailySolarLoadPerFloorTotal() {
		this.averageDailySolarLoadPerFloorTotal = (facadeOneAvgDailySolarLoadPerFloor +
				facadeTwoAvgDailySolarLoadPerFloor + facadeThreeAvgDailySolarLoadPerFloor +
				facadeFourAvgDailySolarLoadPerFloor);
		notifier.fireValueChange("averageDailySolarLoadPerFloorTotal");
	}

	// END - Average Daily Solar Load per Floor Getters & Setters

	// START - Output Information: Building Totals Getters & Setters

	/**
	 * @return the facadeOneArea
	 */
	public double getFacadeOneArea() {
		return functions.roundDecimal(facadeOneArea, dpArea);
	}

	/**
	 * the facadeOneArea to set
	 */
	public void setFacadeOneArea() {
		this.facadeOneArea = (width * overallBuildingHeight);
		this.setTotalFacadeArea();
		this.setFacadeOneGlazedArea();
		this.setFacadeOneTypicalFloorArea();
		notifier.fireValueChange("facadeOneArea");
	}

	/**
	 * @return the facadeTwoArea
	 */
	public double getFacadeTwoArea() {
		return functions.roundDecimal(facadeTwoArea, dpArea);
	}

	/**
	 * the facadeTwoArea to set
	 */
	public void setFacadeTwoArea() {
		this.facadeTwoArea = (length * overallBuildingHeight);
		this.setTotalFacadeArea();
		this.setFacadeTwoGlazedArea();
		this.setFacadeTwoTypicalFloorArea();
		notifier.fireValueChange("facadeTwoArea");
	}

	/**
	 * @return the facadeThreeArea
	 */
	public double getFacadeThreeArea() {
		return functions.roundDecimal(facadeThreeArea, dpArea);
	}

	/**
	 * the facadeThreeArea to set
	 */
	public void setFacadeThreeArea() {
		this.facadeThreeArea = (width * overallBuildingHeight);
		this.setTotalFacadeArea();
		this.setFacadeThreeGlazedArea();
		this.setFacadeThreeTypicalFloorArea();
		notifier.fireValueChange("facadeThreeArea");
	}

	/**
	 * @return the facadeFourArea
	 */
	public double getFacadeFourArea() {
		return functions.roundDecimal(facadeFourArea, dpArea);
	}

	/**
	 * the facadeFourArea to set
	 */
	public void setFacadeFourArea() {
		this.facadeFourArea = (length * overallBuildingHeight);
		this.setTotalFacadeArea();
		this.setFacadeFourGlazedArea();
		this.setFacadeFourTypicalFloorArea();
		notifier.fireValueChange("facadeFourArea");
	}

	/**
	 * @return the totalFacadeArea
	 */
	public double getTotalFacadeArea() {
		return functions.roundDecimal(totalFacadeArea, dpArea);
	}

	/**
	 * the totalFacadeArea to set
	 */
	public void setTotalFacadeArea() {
		this.totalFacadeArea = (facadeOneArea + facadeTwoArea + facadeThreeArea + facadeFourArea);
		this.setTotalGlazedArea();
		this.setMaxAverageUvalueFacade();
		this.setHeatLossElementsArea();
		notifier.fireValueChange("totalFacadeArea");
	}

	/**
	 * @return the roofArea
	 */
	public double getRoofArea() {
		return functions.roundDecimal(roofArea, dpArea);
	}

	/**
	 * @param roofArea
	 *            the roofArea to set
	 */
	public void setRoofArea() {
		this.roofArea = (length * width);
		this.setRoofAndGroundFloorArea();
		notifier.fireValueChange("roofArea");
	}

	/**
	 * @return the groundFloorArea
	 */
	public double getGroundFloorArea() {
		return functions.roundDecimal(groundFloorArea, dpArea);
	}

	/**
	 * @param groundFloorArea
	 *            the groundFloorArea to set
	 */
	public void setGroundFloorArea() {
		this.groundFloorArea = (length * width);
		;
		this.setRoofAndGroundFloorArea();
		notifier.fireValueChange("groundFloorArea");
	}

	/**
	 * @return the roofAndGroundFloorArea
	 */
	public double getRoofAndGroundFloorArea() {
		return functions.roundDecimal(roofAndGroundFloorArea, dpArea);
	}

	/**
	 * @param roofAndGroundFloorArea
	 *            the roofAndGroundFloorArea to set
	 */
	public void setRoofAndGroundFloorArea() {
		this.roofAndGroundFloorArea = (roofArea + groundFloorArea);
		this.setMaxAverageUvalueFacade();
		this.setHeatLossElementsArea();
		notifier.fireValueChange("roofAndGroundFloorArea");
	}

	/**
	 * @return the heatLossElementsArea
	 */
	public double getHeatLossElementsArea() {
		return functions.roundDecimal(heatLossElementsArea, dpArea);
	}

	/**
	 * @param heatLossElementsArea
	 *            the heatLossElementsArea to set
	 */
	public void setHeatLossElementsArea() {
		this.heatLossElementsArea = (roofAndGroundFloorArea + totalFacadeArea);
		this.setMaxAverageUvalueTotal();
		this.setMaxAverageUvalueFacade();
		this.setVolumeDivHeatLossElemArea();
		notifier.fireValueChange("heatLossElementsArea");
	}

	/**
	 * @return the volume
	 */
	public double getVolume() {
		return functions.roundDecimal(volume, dpVolume);
	}

	/**
	 * @param volume
	 *            the volume to set
	 */
	public void setVolume() {
		this.volume = (length * width * overallBuildingHeight);
		this.setMaxAverageUvalueTotal();
		this.setVolumeDivHeatLossElemArea();
		notifier.fireValueChange("volume");
	}

	/**
	 * @return the volumeDivHeatLossElemArea
	 */
	public double getVolumeDivHeatLossElemArea() {
		return functions.roundDecimal(volumeDivHeatLossElemArea, dpVolume);
	}

	/**
	 * @param volumeDivHeatLossElemArea
	 *            the volumeDivHeatLossElemArea to set
	 */
	public void setVolumeDivHeatLossElemArea() {
		this.volumeDivHeatLossElemArea = (volume / heatLossElementsArea);
		notifier.fireValueChange("volumeDivHeatLossElemArea");
	}

	/**
	 * @return the averageUvalueRoofAndFloor
	 */
	public double getAverageUvalueRoofAndFloor() {
		return functions.roundDecimal(averageUvalueRoofAndFloor, dpUvalue);
	}

	/**
	 * @param averageUvalueRoofAndFloor
	 *            the averageUvalueRoofAndFloor to set
	 */
	public void setAverageUvalueRoofAndFloor() {
		this.averageUvalueRoofAndFloor = ((uValueRoof + uValueGroundFloor) / 2);
		this.setMaxAverageUvalueFacade();
		notifier.fireValueChange("averageUvalueRoofAndFloor");
	}

	// END - Output Information: Building Totals Getters & Setters

	// START - Output Information: Typical Floor Getters & Setters

	/**
	 * @return the facadeOneTypicalFloorArea
	 */
	public double getFacadeOneTypicalFloorArea() {
		return functions.roundDecimal(facadeOneTypicalFloorArea, dpArea);
	}

	/**
	 * @param facadeOneTypicalFloorArea
	 *            the facadeOneTypicalFloorArea to set
	 */
	public void setFacadeOneTypicalFloorArea() {
		this.facadeOneTypicalFloorArea = (facadeOneArea / storeys);
		this.setFacadeOneTypicalFloorGlazedArea();
		notifier.fireValueChange("facadeOneTypicalFloorArea");
	}

	/**
	 * @return the facadeOneTypicalFloorGlazedArea
	 */
	public double getFacadeOneTypicalFloorGlazedArea() {
		return functions.roundDecimal(facadeOneTypicalFloorGlazedArea, dpArea);
	}

	/**
	 * @param facadeOneTypicalFloorGlazedArea
	 *            the facadeOneTypicalFloorGlazedArea to set
	 */
	public void setFacadeOneTypicalFloorGlazedArea() {
		this.facadeOneTypicalFloorGlazedArea = (facadeOneTypicalFloorArea
				* facadeOneGlazedPercentage / 100);
		//this.setAverageGroundFloorDesignDaylightFactor();
		//this.setAverageFirstFloorDesignDaylightFactor();
		//this.setAverageSecondFloorDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
		}
		notifier.fireValueChange("facadeOneTypicalFloorGlazedArea");
	}

	/**
	 * @return the facadeOneTypicalFloorPerimeterZoneArea
	 */
	public double getFacadeOneTypicalFloorPerimeterZoneArea() {
		return functions.roundDecimal(facadeOneTypicalFloorPerimeterZoneArea, dpArea);
	}

	/**
	 * @param facadeOneTypicalFloorPerimeterZoneArea
	 *            the facadeOneTypicalFloorPerimeterZoneArea to set
	 */
	public void setFacadeOneTypicalFloorPerimeterZoneArea() {
		this.facadeOneTypicalFloorPerimeterZoneArea = (internalWidth * extentOfPerimeterZone);
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeOneTypicalFloorPerimeterZoneArea");
	}

	/**
	 * @return the facadeTwoTypicalFloorArea
	 */
	public double getFacadeTwoTypicalFloorArea() {
		return functions.roundDecimal(facadeTwoTypicalFloorArea, dpArea);
	}

	/**
	 * @param facadeTwoTypicalFloorArea
	 *            the facadeTwoTypicalFloorArea to set
	 */
	public void setFacadeTwoTypicalFloorArea() {
		this.facadeTwoTypicalFloorArea = (facadeTwoArea / storeys);
		this.setFacadeTwoTypicalFloorGlazedArea();
		notifier.fireValueChange("facadeTwoTypicalFloorArea");
	}

	/**
	 * @return the facadeTwoTypicalFloorGlazedArea
	 */
	public double getFacadeTwoTypicalFloorGlazedArea() {
		return functions.roundDecimal(facadeTwoTypicalFloorGlazedArea, dpArea);
	}

	/**
	 * @param facadeTwoTypicalFloorGlazedArea
	 *            the facadeTwoTypicalFloorGlazedArea to set
	 */
	public void setFacadeTwoTypicalFloorGlazedArea() {
		this.facadeTwoTypicalFloorGlazedArea = (facadeTwoTypicalFloorArea
				* facadeTwoGlazedPercentage / 100);
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
		}
		notifier.fireValueChange("facadeTwoTypicalFloorGlazedArea");
	}

	/**
	 * @return the facadeTwoTypicalFloorPerimeterZoneArea
	 */
	public double getFacadeTwoTypicalFloorPerimeterZoneArea() {
		return functions.roundDecimal(facadeTwoTypicalFloorPerimeterZoneArea, dpArea);
	}

	/**
	 * @param facadeTwoTypicalFloorPerimeterZoneArea
	 *            the facadeTwoTypicalFloorPerimeterZoneArea to set
	 */
	public void setFacadeTwoTypicalFloorPerimeterZoneArea() {
		this.facadeTwoTypicalFloorPerimeterZoneArea = (internalLength * extentOfPerimeterZone);
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeTwoTypicalFloorPerimeterZoneArea");
	}

	/**
	 * @return the facadeThreeTypicalFloorArea
	 */
	public double getFacadeThreeTypicalFloorArea() {
		return functions.roundDecimal(facadeThreeTypicalFloorArea, dpArea);
	}

	/**
	 * @param facadeThreeTypicalFloorArea
	 *            the facadeThreeTypicalFloorArea to set
	 */
	public void setFacadeThreeTypicalFloorArea() {
		this.facadeThreeTypicalFloorArea = (facadeThreeArea / storeys);
		this.setFacadeThreeTypicalFloorGlazedArea();
		notifier.fireValueChange("facadeThreeTypicalFloorArea");
	}

	/**
	 * @return the facadeThreeTypicalFloorGlazedArea
	 */
	public double getFacadeThreeTypicalFloorGlazedArea() {
		return functions.roundDecimal(facadeThreeTypicalFloorGlazedArea, dpArea);
	}

	/**
	 * @param facadeThreeTypicalFloorGlazedArea
	 *            the facadeThreeTypicalFloorGlazedArea to set
	 */
	public void setFacadeThreeTypicalFloorGlazedArea() {
		this.facadeThreeTypicalFloorGlazedArea = (facadeThreeTypicalFloorArea
				* facadeThreeGlazedPercentage / 100);
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
		}
		notifier.fireValueChange("facadeThreeTypicalFloorGlazedArea");
	}

	/**
	 * @return the facadeThreeTypicalFloorPerimeterZoneArea
	 */
	public double getFacadeThreeTypicalFloorPerimeterZoneArea() {
		return functions.roundDecimal(facadeThreeTypicalFloorPerimeterZoneArea, dpArea);
	}

	/**
	 * @param facadeThreeTypicalFloorPerimeterZoneArea
	 *            the facadeThreeTypicalFloorPerimeterZoneArea to set
	 */
	public void setFacadeThreeTypicalFloorPerimeterZoneArea() {
		this.facadeThreeTypicalFloorPerimeterZoneArea = (internalWidth * extentOfPerimeterZone);
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeThreeTypicalFloorPerimeterZoneArea");
	}

	/**
	 * @return the facadeFourTypicalFloorArea
	 */
	public double getFacadeFourTypicalFloorArea() {
		return functions.roundDecimal(facadeFourTypicalFloorArea, dpArea);
	}

	/**
	 * @param facadeFourTypicalFloorArea
	 *            the facadeFourTypicalFloorArea to set
	 */
	public void setFacadeFourTypicalFloorArea() {
		this.facadeFourTypicalFloorArea = (facadeFourArea / storeys);
		this.setFacadeFourTypicalFloorGlazedArea();
		notifier.fireValueChange("facadeFourTypicalFloorArea");
	}

	/**
	 * @return the facadeFourTypicalFloorGlazedArea
	 */
	public double getFacadeFourTypicalFloorGlazedArea() {
		return functions.roundDecimal(facadeFourTypicalFloorGlazedArea, dpArea);
	}

	/**
	 * @param facadeFourTypicalFloorGlazedArea
	 *            the facadeFourTypicalFloorGlazedArea to set
	 */
	public void setFacadeFourTypicalFloorGlazedArea() {
		this.facadeFourTypicalFloorGlazedArea = (facadeFourTypicalFloorArea
				* facadeFourGlazedPercentage / 100);
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		notifier.fireValueChange("facadeFourTypicalFloorGlazedArea");
	}

	/**
	 * @return the facadeFourTypicalFloorPerimeterZoneArea
	 */
	public double getFacadeFourTypicalFloorPerimeterZoneArea() {
		return functions.roundDecimal(facadeFourTypicalFloorPerimeterZoneArea, dpArea);
	}

	/**
	 * @param facadeFourTypicalFloorPerimeterZoneArea
	 *            the facadeFourTypicalFloorPerimeterZoneArea to set
	 */
	public void setFacadeFourTypicalFloorPerimeterZoneArea() {
		this.facadeFourTypicalFloorPerimeterZoneArea = (internalLength * extentOfPerimeterZone);
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeFourTypicalFloorPerimeterZoneArea");
	}

	// END - Output Information: Typical Floor Getters & Setters

	// START - Daylighting Getters & Setters

	/**
	 * @return the diffuseTransmittanceText
	 */
	public String getDiffuseTransmittanceText() {
		return diffuseTransmittanceText;
	}

	/**
	 * @param diffuseTransmittanceText the diffuseTransmittanceText to set
	 */
	public void setDiffuseTransmittanceText(String diffuseTransmittanceText) {
		this.diffuseTransmittanceText = diffuseTransmittanceText;
		this.setDiffuseTransmittanceValue();
		notifier.fireValueChange("diffuseTransmittanceText");
	}

	/**
	 * @return the diffuseTransmittanceValue
	 */
	public double getDiffuseTransmittanceValue() {
		return functions.roundDecimal(diffuseTransmittanceValue, dpFactor);
	}

	/**
	 * @param diffuseTransmittanceValue
	 *            the diffuseTransmittanceValue to set
	 */
	public void setDiffuseTransmittanceValue() {
		if (this.diffuseTransmittanceText != null) {
			this.diffuseTransmittanceValue = daylighting.getDiffuseTransmittance(this.diffuseTransmittanceText);
		} else {
			this.diffuseTransmittanceValue = 0d;
		}
		//this.setAverageGroundFloorDesignDaylightFactor();
		//this.setAverageFirstFloorDesignDaylightFactor();
		//this.setAverageSecondFloorDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		notifier.fireValueChange("diffuseTransmittanceValue");
	}
	
	/**
	 * @return the averageReflectanceOfInteriorSurfacesText
	 */
	public String getAverageReflectanceOfInteriorSurfacesText() {
		return averageReflectanceOfInteriorSurfacesText;
	}

	/**
	 * @param averageReflectanceOfInteriorSurfacesText the averageReflectanceOfInteriorSurfacesText to set
	 */
	public void setAverageReflectanceOfInteriorSurfacesText(
			String averageReflectanceOfInteriorSurfacesText) {
		this.averageReflectanceOfInteriorSurfacesText = averageReflectanceOfInteriorSurfacesText;
		this.setAverageReflectanceOfInteriorSurfacesValue();
		// these can be set seperately if needed
		this.setFacadeOneAverageReflectanceOfInteriorSurfacesText(averageReflectanceOfInteriorSurfacesText);
		this.setFacadeTwoAverageReflectanceOfInteriorSurfacesText(averageReflectanceOfInteriorSurfacesText);
		this.setFacadeThreeAverageReflectanceOfInteriorSurfacesText(averageReflectanceOfInteriorSurfacesText);
		this.setFacadeFourAverageReflectanceOfInteriorSurfacesText(averageReflectanceOfInteriorSurfacesText);
		notifier.fireValueChange("averageReflectanceOfInteriorSurfacesText");
		if (saveValues) {this.projectInstance.setAverageReflectanceOfInteriorSurfacesText(averageReflectanceOfInteriorSurfacesText);}
	}

	/**
	 * @return the averageReflectanceofInteriorSurfacesValue
	 */
	public double getAverageReflectanceOfInteriorSurfacesValue() {
		return functions.roundDecimal(averageReflectanceOfInteriorSurfacesValue, dpFactor);
	}

	/**
	 * @param averageReflectanceofInteriorSurfacesValue
	 *            the averageReflectanceofInteriorSurfacesValue to set
	 */
	public void setAverageReflectanceOfInteriorSurfacesValue() {
		if (this.averageReflectanceOfInteriorSurfacesText != null) {
			this.averageReflectanceOfInteriorSurfacesValue = daylighting.getReflectance(this.averageReflectanceOfInteriorSurfacesText);
		} else {
			this.averageReflectanceOfInteriorSurfacesValue = 0d;
		}
		//this.setAverageGroundFloorDesignDaylightFactor();
		//this.setAverageFirstFloorDesignDaylightFactor();
		//this.setAverageSecondFloorDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		notifier.fireValueChange("averageReflectanceOfInteriorSurfacesValue");
	}

	/**
	 * @return the maintenanceFactor
	 */
	public double getMaintenanceFactorValue() {
		return functions.roundDecimal(maintenanceFactorValue, dpFactor);
	}

	/**
	 * @param maintenanceFactorValue
	 *            the maintenanceFactorValue to set
	 */
	public void setMaintenanceFactorValue() {
		if (this.buildingType == null || this.locationSetting == null) {
			this.maintenanceFactorValue = 1.0d;
		} else {
			this.maintenanceFactorValue = daylighting.getMaintenanceFactor(this.buildingType, this.locationSetting, 0);
		}
		//this.setAverageGroundFloorDesignDaylightFactor();
		//this.setAverageFirstFloorDesignDaylightFactor();
		//this.setAverageSecondFloorDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		notifier.fireValueChange("maintenanceFactorValue");
		
	}
	
	/**
	 * @return the facadeOneDiffuseTransmittanceText
	 */
	public String getFacadeOneDiffuseTransmittanceText() {
		return facadeOneDiffuseTransmittanceText;
	}

	/**
	 * @param facadeOneDiffuseTransmittanceText the facadeOneDiffuseTransmittanceText to set
	 */
	public void setFacadeOneDiffuseTransmittanceText(String facadeOneDiffuseTransmittanceText) {
		this.facadeOneDiffuseTransmittanceText = facadeOneDiffuseTransmittanceText;
		this.setFacadeOneDiffuseTransmittanceValue();
		notifier.fireValueChange("facadeOneDiffuseTransmittanceText");
	}

	/**
	 * @return the facadeOneDiffuseTransmittanceValue
	 */
	public double getFacadeOneDiffuseTransmittanceValue() {
		return functions.roundDecimal(facadeOneDiffuseTransmittanceValue, dpFactor);
	}

	/**
	 * @param facadeOneDiffuseTransmittanceValue
	 *            the facadeOneDiffuseTransmittanceValue to set
	 */
	public void setFacadeOneDiffuseTransmittanceValue() {
		if (this.facadeOneDiffuseTransmittanceText != null) {
			this.facadeOneDiffuseTransmittanceValue = daylighting.getDiffuseTransmittance(this.facadeOneDiffuseTransmittanceText);
		} else {
			this.facadeOneDiffuseTransmittanceValue = 0d;
		}
		this.setFacadeOneAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
		}
		notifier.fireValueChange("facadeOneDiffuseTransmittanceValue");
	}
		
	/**
	 * @return the facadeOneAverageReflectanceOfInteriorSurfacesText
	 */
	public String getFacadeOneAverageReflectanceOfInteriorSurfacesText() {
		return facadeOneAverageReflectanceOfInteriorSurfacesText;
	}

	/**
	 * @param facadeOneAverageReflectanceOfInteriorSurfacesText the facadeOneAverageReflectanceOfInteriorSurfacesText to set
	 */
	public void setFacadeOneAverageReflectanceOfInteriorSurfacesText(
			String facadeOneAverageReflectanceOfInteriorSurfacesText) {
		this.facadeOneAverageReflectanceOfInteriorSurfacesText = facadeOneAverageReflectanceOfInteriorSurfacesText;
		this.setFacadeOneAverageReflectanceOfInteriorSurfacesValue();
		notifier.fireValueChange("facadeOneAverageReflectanceOfInteriorSurfacesText");
	}

	/**
	 * @return the facadeOneAverageReflectanceofInteriorSurfacesValue
	 */
	public double getFacadeOneAverageReflectanceOfInteriorSurfacesValue() {
		return functions.roundDecimal(facadeOneAverageReflectanceOfInteriorSurfacesValue, dpFactor);
	}

	/**
	 * @param facadeOneAverageReflectanceofInteriorSurfacesValue
	 *            the facadeOneAverageReflectanceofInteriorSurfacesValue to set
	 */
	public void setFacadeOneAverageReflectanceOfInteriorSurfacesValue() {
		if (this.facadeOneAverageReflectanceOfInteriorSurfacesText != null) {
			this.facadeOneAverageReflectanceOfInteriorSurfacesValue = daylighting.getReflectance(this.facadeOneAverageReflectanceOfInteriorSurfacesText);
		} else {
			this.facadeOneAverageReflectanceOfInteriorSurfacesValue = 0d;
		}
		this.setFacadeOneAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
		}
		notifier.fireValueChange("facadeOneAverageReflectanceOfInteriorSurfacesValue");
	}

	/**
	 * @return the facadeTwoDiffuseTransmittanceText
	 */
	public String getFacadeTwoDiffuseTransmittanceText() {
		return facadeTwoDiffuseTransmittanceText;
	}

	/**
	 * @param facadeTwoDiffuseTransmittanceText the facadeTwoDiffuseTransmittanceText to set
	 */
	public void setFacadeTwoDiffuseTransmittanceText(String facadeTwoDiffuseTransmittanceText) {
		this.facadeTwoDiffuseTransmittanceText = facadeTwoDiffuseTransmittanceText;
		this.setFacadeTwoDiffuseTransmittanceValue();
		notifier.fireValueChange("facadeTwoDiffuseTransmittanceText");
	}

	/**
	 * @return the facadeTwoDiffuseTransmittanceValue
	 */
	public double getFacadeTwoDiffuseTransmittanceValue() {
		return functions.roundDecimal(facadeTwoDiffuseTransmittanceValue, dpFactor);
	}

	/**
	 * @param facadeTwoDiffuseTransmittanceValue
	 *            the facadeTwoDiffuseTransmittanceValue to set
	 */
	public void setFacadeTwoDiffuseTransmittanceValue() {
		if (this.facadeTwoDiffuseTransmittanceText != null) {
			this.facadeTwoDiffuseTransmittanceValue = daylighting.getDiffuseTransmittance(this.facadeTwoDiffuseTransmittanceText);
		} else {
			this.facadeTwoDiffuseTransmittanceValue = 0d;
		}
		this.setFacadeTwoAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
		}
		notifier.fireValueChange("facadeTwoDiffuseTransmittanceValue");
	}
		
	/**
	 * @return the facadeTwoAverageReflectanceOfInteriorSurfacesText
	 */
	public String getFacadeTwoAverageReflectanceOfInteriorSurfacesText() {
		return facadeTwoAverageReflectanceOfInteriorSurfacesText;
	}

	/**
	 * @param facadeTwoAverageReflectanceOfInteriorSurfacesText the facadeTwoAverageReflectanceOfInteriorSurfacesText to set
	 */
	public void setFacadeTwoAverageReflectanceOfInteriorSurfacesText(
			String facadeTwoAverageReflectanceOfInteriorSurfacesText) {
		this.facadeTwoAverageReflectanceOfInteriorSurfacesText = facadeTwoAverageReflectanceOfInteriorSurfacesText;
		this.setFacadeTwoAverageReflectanceOfInteriorSurfacesValue();
		notifier.fireValueChange("facadeTwoAverageReflectanceOfInteriorSurfacesText");
	}

	/**
	 * @return the facadeTwoAverageReflectanceofInteriorSurfacesValue
	 */
	public double getFacadeTwoAverageReflectanceOfInteriorSurfacesValue() {
		return functions.roundDecimal(facadeTwoAverageReflectanceOfInteriorSurfacesValue, dpFactor);
	}

	/**
	 * @param facadeTwoAverageReflectanceofInteriorSurfacesValue
	 *            the facadeTwoAverageReflectanceofInteriorSurfacesValue to set
	 */
	public void setFacadeTwoAverageReflectanceOfInteriorSurfacesValue() {
		if (this.facadeTwoAverageReflectanceOfInteriorSurfacesText != null) {
			this.facadeTwoAverageReflectanceOfInteriorSurfacesValue = daylighting.getReflectance(this.facadeTwoAverageReflectanceOfInteriorSurfacesText);
		} else {
			this.facadeTwoAverageReflectanceOfInteriorSurfacesValue = 0d;
		}
		this.setFacadeTwoAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
		}
		notifier.fireValueChange("facadeTwoAverageReflectanceOfInteriorSurfacesValue");
	}

	/**
	 * @return the facadeThreeDiffuseTransmittanceText
	 */
	public String getFacadeThreeDiffuseTransmittanceText() {
		return facadeThreeDiffuseTransmittanceText;
	}

	/**
	 * @param facadeThreeDiffuseTransmittanceText the facadeThreeDiffuseTransmittanceText to set
	 */
	public void setFacadeThreeDiffuseTransmittanceText(String facadeThreeDiffuseTransmittanceText) {
		this.facadeThreeDiffuseTransmittanceText = facadeThreeDiffuseTransmittanceText;
		this.setFacadeThreeDiffuseTransmittanceValue();
		notifier.fireValueChange("facadeThreeDiffuseTransmittanceText");
	}

	/**
	 * @return the facadeThreeDiffuseTransmittanceValue
	 */
	public double getFacadeThreeDiffuseTransmittanceValue() {
		return functions.roundDecimal(facadeThreeDiffuseTransmittanceValue, dpFactor);
	}

	/**
	 * @param facadeThreeDiffuseTransmittanceValue
	 *            the facadeThreeDiffuseTransmittanceValue to set
	 */
	public void setFacadeThreeDiffuseTransmittanceValue() {
		if (this.facadeThreeDiffuseTransmittanceText != null) {
			this.facadeThreeDiffuseTransmittanceValue = daylighting.getDiffuseTransmittance(this.facadeThreeDiffuseTransmittanceText);
		} else {
			this.facadeThreeDiffuseTransmittanceValue = 0d;
		}
		this.setFacadeThreeAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
		}
		notifier.fireValueChange("facadeThreeDiffuseTransmittanceValue");
	}
		
	/**
	 * @return the facadeThreeAverageReflectanceOfInteriorSurfacesText
	 */
	public String getFacadeThreeAverageReflectanceOfInteriorSurfacesText() {
		return facadeThreeAverageReflectanceOfInteriorSurfacesText;
	}

	/**
	 * @param facadeThreeAverageReflectanceOfInteriorSurfacesText the facadeThreeAverageReflectanceOfInteriorSurfacesText to set
	 */
	public void setFacadeThreeAverageReflectanceOfInteriorSurfacesText(
			String facadeThreeAverageReflectanceOfInteriorSurfacesText) {
		this.facadeThreeAverageReflectanceOfInteriorSurfacesText = facadeThreeAverageReflectanceOfInteriorSurfacesText;
		this.setFacadeThreeAverageReflectanceOfInteriorSurfacesValue();
		notifier.fireValueChange("facadeThreeAverageReflectanceOfInteriorSurfacesText");
	}

	/**
	 * @return the facadeThreeAverageReflectanceofInteriorSurfacesValue
	 */
	public double getFacadeThreeAverageReflectanceOfInteriorSurfacesValue() {
		return functions.roundDecimal(facadeThreeAverageReflectanceOfInteriorSurfacesValue, dpFactor);
	}

	/**
	 * @param facadeThreeAverageReflectanceofInteriorSurfacesValue
	 *            the facadeThreeAverageReflectanceofInteriorSurfacesValue to set
	 */
	public void setFacadeThreeAverageReflectanceOfInteriorSurfacesValue() {
		if (this.facadeThreeAverageReflectanceOfInteriorSurfacesText != null) {
			this.facadeThreeAverageReflectanceOfInteriorSurfacesValue = daylighting.getReflectance(this.facadeThreeAverageReflectanceOfInteriorSurfacesText);
		} else {
			this.facadeThreeAverageReflectanceOfInteriorSurfacesValue = 0d;
		}
		this.setFacadeThreeAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
		}
		notifier.fireValueChange("facadeThreeAverageReflectanceOfInteriorSurfacesValue");
	}

	/**
	 * @return the facadeFourDiffuseTransmittanceText
	 */
	public String getFacadeFourDiffuseTransmittanceText() {
		return facadeFourDiffuseTransmittanceText;
	}

	/**
	 * @param facadeFourDiffuseTransmittanceText the facadeFourDiffuseTransmittanceText to set
	 */
	public void setFacadeFourDiffuseTransmittanceText(String facadeFourDiffuseTransmittanceText) {
		this.facadeFourDiffuseTransmittanceText = facadeFourDiffuseTransmittanceText;
		this.setFacadeFourDiffuseTransmittanceValue();
		notifier.fireValueChange("facadeFourDiffuseTransmittanceText");
	}

	/**
	 * @return the facadeFourDiffuseTransmittanceValue
	 */
	public double getFacadeFourDiffuseTransmittanceValue() {
		return functions.roundDecimal(facadeFourDiffuseTransmittanceValue, dpFactor);
	}

	/**
	 * @param facadeFourDiffuseTransmittanceValue
	 *            the facadeFourDiffuseTransmittanceValue to set
	 */
	public void setFacadeFourDiffuseTransmittanceValue() {
		if (this.facadeFourDiffuseTransmittanceText != null) {
			this.facadeFourDiffuseTransmittanceValue = daylighting.getDiffuseTransmittance(facadeFourDiffuseTransmittanceText);
		} else {
			this.facadeFourDiffuseTransmittanceValue = 0d;
		}
		this.setFacadeFourAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		notifier.fireValueChange("facadeFourDiffuseTransmittanceValue");
	}
		
	/**
	 * @return the facadeFourAverageReflectanceOfInteriorSurfacesText
	 */
	public String getFacadeFourAverageReflectanceOfInteriorSurfacesText() {
		return facadeFourAverageReflectanceOfInteriorSurfacesText;
	}

	/**
	 * @param facadeFourAverageReflectanceOfInteriorSurfacesText the facadeFourAverageReflectanceOfInteriorSurfacesText to set
	 */
	public void setFacadeFourAverageReflectanceOfInteriorSurfacesText(
			String facadeFourAverageReflectanceOfInteriorSurfacesText) {
		this.facadeFourAverageReflectanceOfInteriorSurfacesText = facadeFourAverageReflectanceOfInteriorSurfacesText;
		this.setFacadeFourAverageReflectanceOfInteriorSurfacesValue();
		notifier.fireValueChange("facadeFourAverageReflectanceOfInteriorSurfacesText");
	}

	/**
	 * @return the facadeFourAverageReflectanceofInteriorSurfacesValue
	 */
	public double getFacadeFourAverageReflectanceOfInteriorSurfacesValue() {
		return functions.roundDecimal(facadeFourAverageReflectanceOfInteriorSurfacesValue, dpFactor);
	}

	/**
	 * @param facadeFourAverageReflectanceofInteriorSurfacesValue
	 *            the facadeFourAverageReflectanceofInteriorSurfacesValue to set
	 */
	public void setFacadeFourAverageReflectanceOfInteriorSurfacesValue() {
		if (this.facadeFourAverageReflectanceOfInteriorSurfacesText != null) {
			this.facadeFourAverageReflectanceOfInteriorSurfacesValue = daylighting.getReflectance(this.facadeFourAverageReflectanceOfInteriorSurfacesText);
		} else {
			this.facadeFourAverageReflectanceOfInteriorSurfacesValue = 0d;
		}
		this.setFacadeFourAverageDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		notifier.fireValueChange("facadeFourAverageReflectanceOfInteriorSurfacesValue");
	}

	
	/**
	 * @return the areaOfInternalSurfaces
	 */
	public double getAreaOfInternalSurfaces() {
		return functions.roundDecimal(areaOfInternalSurfaces, dpArea);
	}

	/**
	 * @param areaOfInternalSurfaces
	 *            the areaOfInternalSurfaces to set
	 */
	public void setAreaOfInternalSurfaces() {
		this.areaOfInternalSurfaces = (internalFloorArea + internalCeilingArea + internalWallArea);
		//this.setAverageGroundFloorDesignDaylightFactor();
		//this.setAverageFirstFloorDesignDaylightFactor();
		//this.setAverageSecondFloorDesignDaylightFactor();
		for (int i = 0; i < this.storeys; i++){
			this.setFloorAverageDesignDaylightFactor(facadeOne, i);
			this.setFloorAverageDesignDaylightFactor(facadeTwo, i);
			this.setFloorAverageDesignDaylightFactor(facadeThree, i);
			this.setFloorAverageDesignDaylightFactor(facadeFour, i);
		}
		notifier.fireValueChange("areaOfInternalSurfaces");
	}
	
//	/**
//	 * @return the averageGroundFloorDesignDaylightFactor
//	 */
//	public double getAverageGroundFloorDesignDaylightFactor() {
//		return functions.roundDecimal(averageGroundFloorDesignDaylightFactor, dpFactor);
//	}
//
//	/**
//	 * @param averageGroundFloorDesignDaylightFactor
//	 *            the averageGroundFloorDesignDaylightFactor to set
//	 */
//	public void setAverageGroundFloorDesignDaylightFactor() {
//		this.averageGroundFloorDesignDaylightFactor = (diffuseTransmittanceValue
//				* facadeOneTypicalFloorGlazedArea * groundFloorAngleZ * maintenanceFactorValue)
//				/ (areaOfInternalSurfaces * (1 - (averageReflectanceOfInteriorSurfacesValue * averageReflectanceOfInteriorSurfacesValue)));
//		notifier.fireValueChange("averageGroundFloorDesignDaylightFactor");
//	}
//
//	/**
//	 * @return the averageFirstFloorDesignDaylightFactor
//	 */
//	public double getAverageFirstFloorDesignDaylightFactor() {
//		return functions.roundDecimal(averageFirstFloorDesignDaylightFactor, dpFactor);
//	}
//
//	/**
//	 * @param averageFirstFloorDesignDaylightFactor
//	 *            the averageFirstFloorDesignDaylightFactor to set
//	 */
//	public void setAverageFirstFloorDesignDaylightFactor() {
//		this.averageFirstFloorDesignDaylightFactor = (diffuseTransmittanceValue
//				* facadeOneTypicalFloorGlazedArea * firstFloorAngleZ * maintenanceFactorValue)
//				/ (areaOfInternalSurfaces * (1 - (averageReflectanceOfInteriorSurfacesValue * averageReflectanceOfInteriorSurfacesValue)));
//		notifier.fireValueChange("averageFirstFloorDesignDaylightFactor");
//	}
//
//	/**
//	 * @return the averageSecondFloorDesignDaylightFactor
//	 */
//	public double getAverageSecondFloorDesignDaylightFactor() {
//		return functions.roundDecimal(averageSecondFloorDesignDaylightFactor, dpFactor);
//	}
//
//	/**
//	 * @param averageSecondFloorDesignDaylightFactor
//	 *            the averageSecondFloorDesignDaylightFactor to set
//	 */
//	public void setAverageSecondFloorDesignDaylightFactor() {
//		this.averageSecondFloorDesignDaylightFactor = (diffuseTransmittanceValue
//				* facadeOneTypicalFloorGlazedArea * secondFloorAngleZ * maintenanceFactorValue)
//				/ (areaOfInternalSurfaces * (1 - (averageReflectanceOfInteriorSurfacesValue * averageReflectanceOfInteriorSurfacesValue)));
//		notifier.fireValueChange("averageSecondFloorDesignDaylightFactor");
//	}

	public void setAverageSolarLoads(double facadeOneAverageSolarLoad, double facadeTwoAverageSolarLoad, double facadeThreeAverageSolarLoad, double facadeFourAverageSolarLoad) {
		this.facadeOneAverageSolarLoad = facadeOneAverageSolarLoad;
		this.facadeTwoAverageSolarLoad = facadeTwoAverageSolarLoad;
		this.facadeThreeAverageSolarLoad = facadeThreeAverageSolarLoad;
		this.facadeFourAverageSolarLoad = facadeFourAverageSolarLoad;
		this.setFacadeOneAvgDailySolarLoadPerFloor();
		this.setFacadeTwoAvgDailySolarLoadPerFloor();
		this.setFacadeThreeAvgDailySolarLoadPerFloor();
		this.setFacadeFourAvgDailySolarLoadPerFloor();
		notifier.fireValueChange("facadeOneAverageSolarLoad");
		notifier.fireValueChange("facadeTwoAverageSolarLoad");
		notifier.fireValueChange("facadeThreeAverageSolarLoad");
		notifier.fireValueChange("facadeFourAverageSolarLoad");
		
	}

	/**
	 * @return the canopyOverhangHorizontalDepth
	 */
	public double getCanopyOverhangHorizontalDepth() {
		return canopyOverhangHorizontalDepth;
	}

	public boolean[] saveLockStates() {
		boolean[] states = new boolean[4];
		states[0] = this.isFacadeOneGlazedAreaLock();
		states[1] = this.isFacadeTwoGlazedAreaLock();
		states[2] = this.isFacadeThreeGlazedAreaLock();
		states[3] = this.isFacadeFourGlazedAreaLock();
		return states;
	}
	
	public void restoreLockStates(boolean[] states) {
		this.setFacadeOneGlazedAreaLock(states[0]);
		this.setFacadeTwoGlazedAreaLock(states[1]);
		this.setFacadeThreeGlazedAreaLock(states[2]);
		this.setFacadeFourGlazedAreaLock(states[3]);
	}


	/**
	 * @return the windowConfig
	 */
	public String getWindowConfig() {
		return windowConfig;
	}

	/**
	 * @param windowConfig the windowConfig to set
	 */
	public void setWindowConfig(String windowConfig) {
		this.windowConfig = windowConfig;
		//this.setWindowRatio();
		this.setShadingFactor();
		notifier.fireValueChange("windowConfig");
	}

	/**
	 * @return the shadingType
	 */
	public String getWindowShadingType() {
		return windowShadingType;
	}

	/**
	 * @param windowShadingType the shadingType to set
	 */
	public void setWindowShadingType(String windowShadingType) {
		this.windowShadingType = windowShadingType;
		//this.setWindowRatio();
		this.setShadingFactor();
		notifier.fireValueChange("windowShadingType");
	}

	/**
	 * @return the windowGlazing
	 */
	public String getWindowGlazing() {
		return windowGlazing;
	}

	/**
	 * @param windowGlazing the windowGlazing to set
	 */
	public void setWindowGlazing(String windowGlazing) {
		this.windowGlazing = windowGlazing;
		this.setWindowSolarTransmittance();
		notifier.fireValueChange("windowGlazing");
	}

	/**
	 * @return the windowDepth
	 */
	public double getWindowShadingDepth() {
		return windowDepth;
	}

	/**
	 * @param windowDepth the windowDepth to set
	 */
	public void setWindowShadingDepth(double windowDepth) {
		this.windowDepth = windowDepth;	
		//this.setWindowRatio();
		this.setShadingFactor();
		notifier.fireValueChange("windowDepth");
	}

	/**
	 * @return the louvreColour
	 */
	public String getLouvreColour() {
		return louvreColour;
	}

	/**
	 * @param louvreColour the louvreColour to set
	 */
	public void setLouvreColour(String louvreColour) {
		this.louvreColour = louvreColour;
		//this.setWindowRatio();
		this.setShadingFactor();
		notifier.fireValueChange("louvreColour");
	}

	/**
	 * @return the shadingAngle
	 */
	public String getShadingAngle() {
		return shadingAngle;
	}

	/**
	 * @param shadingAngle the shadingAngle to set
	 */
	public void setShadingAngle(String shadingAngle) {
		this.shadingAngle = shadingAngle;
		this.setShadingAngleVal();
		//this.setWindowRatio();
		this.setShadingFactor();
		notifier.fireValueChange("shadingAngle");
	}
	
	/**
	 * @return the shadingAngleVal
	 */
	public double getShadingAngleVal() {
		return shadingAngleVal;
	}

	/**
	 * @param shadingAngleVal the shadingAngleVal to set
	 */
	public void setShadingAngleVal() {
		if (this.shadingAngle != null) {
			this.shadingAngleVal = windowShading.getShadingAngle(shadingAngle);
		} else {
			this.shadingAngleVal = 0d;
		}
		notifier.fireValueChange("shadingAngleVal");
	}

	/**
	 * @return the slatAngle
	 */
	public String getSlatAngle() {
		return slatAngle;
	}

	/**
	 * @param slatAngle the slatAngle to set
	 */
	public void setSlatAngle(String slatAngle) {
		this.slatAngle = slatAngle;
		this.setSlatAngleVal();
		//this.setWindowRatio();
		this.setShadingFactor();
		notifier.fireValueChange("slatAngle");
	}

	/**
	 * @return the slatAngleVal
	 */
	public double getSlatAngleVal() {
		return slatAngleVal;
	}

	/**
	 * @param slatAngleVal the slatAngleVal to set
	 */
	public void setSlatAngleVal() {
		if (this.slatAngle != null) {
			this.slatAngleVal = windowShading.getShadingAngle(slatAngle);
		} else {
			this.slatAngleVal = 0d;
		}
		notifier.fireValueChange("slatAngleVal");
	}
	
	/**
	 * @return the windowPercentageFrame
	 */
	public double getWindowPercentageFrame() {
		return windowPercentageFrame;
	}

	/**
	 * @param windowPercentageFrame the windowPercentageFrame to set
	 */
	public void setWindowPercentageFrame(double windowPercentageFrame) {
		this.windowPercentageFrame = windowPercentageFrame;
		
		if (applyToFacadeOne)
			this.setFacadeOnePercentageFrame(windowPercentageFrame);
		if (applyToFacadeTwo)
			this.setFacadeTwoPercentageFrame(windowPercentageFrame);
		if (applyToFacadeThree)
			this.setFacadeThreePercentageFrame(windowPercentageFrame);
		if (applyToFacadeFour)
			this.setFacadeFourPercentageFrame(windowPercentageFrame);
	
		notifier.fireValueChange("windowPercentageFrame");
	}

	/**
	 * @return the windowSolarTransmittance
	 */
	public double getWindowSolarTransmittance() {
		return windowSolarTransmittance;
	}

	/**
	 * @param windowSolarTransmittance the windowSolarTransmittance to set
	 */
	public void setWindowSolarTransmittance() {
		if (this.windowGlazing != null) {
			this.windowSolarTransmittance = windowShading.getSolarTransmittance(this.windowGlazing);
		} else {
			this.windowSolarTransmittance = 0d;
		}
		
		if (applyToFacadeOne)
			this.setFacadeOneSolarTransmittance(windowSolarTransmittance);
		if (applyToFacadeTwo)
			this.setFacadeTwoSolarTransmittance(windowSolarTransmittance);
		if (applyToFacadeThree)
			this.setFacadeThreeSolarTransmittance(windowSolarTransmittance);
		if (applyToFacadeFour)
			this.setFacadeFourSolarTransmittance(windowSolarTransmittance);
		
		notifier.fireValueChange("windowSolarTransmittance");
	}

	/**
	 * @return the applyToFacadeOne
	 */
	public boolean isApplyToFacadeOne() {
		return applyToFacadeOne;
	}

	/**
	 * @param applyToFacadeOne the applyToFacadeOne to set
	 */
	public void setApplyToFacadeOne(boolean applyToFacadeOne) {
		this.applyToFacadeOne = applyToFacadeOne;
	}

	/**
	 * @return the applyToFacadeTwo
	 */
	public boolean isApplyToFacadeTwo() {
		return applyToFacadeTwo;
	}

	/**
	 * @param applyToFacadeTwo the applyToFacadeTwo to set
	 */
	public void setApplyToFacadeTwo(boolean applyToFacadeTwo) {
		this.applyToFacadeTwo = applyToFacadeTwo;
	}

	/**
	 * @return the applyToFacadeThree
	 */
	public boolean isApplyToFacadeThree() {
		return applyToFacadeThree;
	}

	/**
	 * @param applyToFacadeThree the applyToFacadeThree to set
	 */
	public void setApplyToFacadeThree(boolean applyToFacadeThree) {
		this.applyToFacadeThree = applyToFacadeThree;
	}

	/**
	 * @return the applyToFacadeFour
	 */
	public boolean isApplyToFacadeFour() {
		return applyToFacadeFour;
	}

	/**
	 * @param applyToFacadeFour the applyToFacadeFour to set
	 */
	public void setApplyToFacadeFour(boolean applyToFacadeFour) {
		this.applyToFacadeFour = applyToFacadeFour;
	}

	/**
	 * @return the shadingFactor
	 */
	public double getShadingFactor() {
		return shadingFactor;
	}

	/**
	 * @param shadingFactor the shadingFactor to set
	 */
	public void setShadingFactor() {
		double shadingFactor = 0;
		String config = "";
		
		if (this.windowShadingType.equals(HEL))
			config = this.louvreColour;
		else
			config = this.windowConfig;
		
		if (config != null && this.facadeOneOrientation != null) {
			if (applyToFacadeOne) {
				shadingFactor = windowShading.getShadingFactor(config, this.facadeOneOrientation, this.windowRatio);
				this.setFacadeOneShadingFactor(shadingFactor);
			}
			
			if (applyToFacadeTwo){
				shadingFactor = windowShading.getShadingFactor(config, this.facadeTwoOrientation, this.windowRatio);
				this.setFacadeTwoShadingFactor(shadingFactor);
			}
			
			if (applyToFacadeThree) {
				shadingFactor = windowShading.getShadingFactor(config, this.facadeThreeOrientation, this.windowRatio);
				this.setFacadeThreeShadingFactor(shadingFactor);
			}
			
			if (applyToFacadeFour) {
				shadingFactor = windowShading.getShadingFactor(config, this.facadeFourOrientation, this.windowRatio);
				this.setFacadeFourShadingFactor(shadingFactor);
			}
		}
	}
	
	/**
	 * @param shadingFactor the shadingFactor to set
	 */
	public void setFacadeOneShadingFactor() {
		double shadingFactor = 0;
		String config = "";
		
		if (this.facadeOneWindowShadingType.equals(HEL))
			config = this.facadeOneLouvreColour;
		else
			config = this.facadeOneWindowConfig;
		
		if (config != null && this.facadeOneOrientation != null) {
			shadingFactor = windowShading.getShadingFactor(config, this.facadeOneOrientation, this.facadeOneWindowRatio);
			this.setFacadeOneShadingFactor(shadingFactor);
		}
	}
	
	
	/**
	 * @param shadingFactor the shadingFactor to set
	 */
	public void setFacadeTwoShadingFactor() {
		double shadingFactor = 0;
		String config = "";
		
		if (this.facadeTwoWindowShadingType.equals(HEL))
			config = this.facadeTwoLouvreColour;
		else
			config = this.facadeTwoWindowConfig;
		
		if (config != null && this.facadeTwoOrientation != null) {
			shadingFactor = windowShading.getShadingFactor(config, this.facadeTwoOrientation, this.facadeTwoWindowRatio);
			this.setFacadeTwoShadingFactor(shadingFactor);
		}
	}
	
	/**
	 * @param shadingFactor the shadingFactor to set
	 */
	public void setFacadeThreeShadingFactor() {
		double shadingFactor = 0;
		String config = "";
		//TODO: reset shading factor if louvre colour is not set
		if (this.facadeThreeWindowShadingType.equals(HEL))
			config = this.facadeThreeLouvreColour;
		else
			config = this.facadeThreeWindowConfig;
		
		if (config != null && this.facadeThreeOrientation != null) {
			shadingFactor = windowShading.getShadingFactor(config, this.facadeThreeOrientation, this.facadeThreeWindowRatio);
			this.setFacadeThreeShadingFactor(shadingFactor);
		}
	}
	
	/**
	 * @param shadingFactor the shadingFactor to set
	 */
	public void setFacadeFourShadingFactor() {
		double shadingFactor = 0;
		String config = "";
		
		if (this.facadeFourWindowShadingType.equals(HEL))
			config = this.facadeFourLouvreColour;
		else
			config = this.facadeFourWindowConfig;
		
		if (config != null && this.facadeFourOrientation != null) {
			shadingFactor = windowShading.getShadingFactor(config, this.facadeFourOrientation, this.facadeFourWindowRatio);
			this.setFacadeFourShadingFactor(shadingFactor);
		}
	}
	
	// END - Daylighting Getters & Setters
	
	/**
	 * @return the facadeOneOrientation
	 */
	public String getFacadeOneOrientation() {
		return facadeOneOrientation;
	}

	/**
	 * @param facadeOneOrientation the facadeOneOrientation to set
	 */
	public void setFacadeOneOrientation(String facadeOneOrientation) {
		this.facadeOneOrientation = facadeOneOrientation;
		this.updatePanelFacadeOne();
		this.setCaptionPanelContentDaylightFacadeOne();
		notifier.fireValueChange("facadeOneOrientation");
	}

	/**
	 * @return the facadeTwoOrientation
	 */
	public String getFacadeTwoOrientation() {
		return facadeTwoOrientation;
	}

	/**
	 * @param facadeTwoOrientation the facadeTwoOrientation to set
	 */
	public void setFacadeTwoOrientation(String facadeTwoOrientation) {
		this.facadeTwoOrientation = facadeTwoOrientation;
		this.updatePanelFacadeTwo();
		this.setCaptionPanelContentDaylightFacadeTwo();
		notifier.fireValueChange("facadeTwoOrientation");
	}

	/**
	 * @return the facadeThreeOrientation
	 */
	public String getFacadeThreeOrientation() {
		return facadeThreeOrientation;
	}

	/**
	 * @param facadeThreeOrientation the facadeThreeOrientation to set
	 */
	public void setFacadeThreeOrientation(String facadeThreeOrientation) {
		this.facadeThreeOrientation = facadeThreeOrientation;
		this.updatePanelFacadeThree();
		this.setCaptionPanelContentDaylightFacadeThree();
		notifier.fireValueChange("facadeThreeOrientation");
	}

	/**
	 * @return the facadeFourOrientation
	 */
	public String getFacadeFourOrientation() {
		return facadeFourOrientation;
	}

	/**
	 * @param facadeFourOrientation the facadeFourOrientation to set
	 */
	public void setFacadeFourOrientation(String facadeFourOrientation) {
		this.facadeFourOrientation = facadeFourOrientation;
		this.updatePanelFacadeFour();
		this.setCaptionPanelContentDaylightFacadeFour();
		notifier.fireValueChange("facadeFourOrientation");
	}

	/**
	 * @return the windowRatio
	 */
	public double getWindowRatio() {
		return windowRatio;
	}

//	/**
//	 * @param windowRatio the windowRatio to set
//	 */
//	public void setWindowRatio() {
//		
//		if (this.windowShadingType == null || this.windowShadingType.equals(NONE))
//			this.windowRatio = 0.0;
//		
//		if (this.windowShadingType.equals(HSCO)) {
//			this.windowRatio = this.windowDepth / (this.groundFloorHeadHeight - this.groundFloorCillHeight);
//			this.windowRatio = functions.roundDecimal(this.windowRatio, 1);
//		}
//		
//		//P5/((Daylighting!G5-Daylighting!G6)-(TAN(P6*PI()/180)*P5))
//		if (this.windowShadingType.equals(SSCO)) {
//			this.windowRatio = this.windowDepth / 
//					((this.groundFloorHeadHeight - this.groundFloorCillHeight) - 
//							(Math.tan(this.shadingAngleVal * Math.PI / 180) * this.windowDepth));
//			//System.out.println("depth: " + this.windowDepth + " | angle: " + this.shadingAngleVal + " | " + this.windowRatio);
//			this.windowRatio = functions.roundDecimal(this.windowRatio, 1);
//		}
//		
//		// these checks must be before the windowshadingType check below
//		if (this.windowRatio > 1.2)
//			this.windowRatio = 1.2;
//		
//		if (this.windowRatio < 0.0)
//			this.windowRatio = 0.0;
//		
//		if (this.windowShadingType.equals(HEL))
//			this.windowRatio = this.slatAngleVal;
//		
//		notifier.fireValueChange("windowRatio");
//	}

	/**
	 * @return the facadeOneGlazedPercentageValue
	 */
	public double getFacadeOneGlazedPercentageValue() {
		return functions.roundDecimal(facadeOneGlazedPercentageValue, dpPercentage);
	}

	/**
	 * @return the facadeTwoGlazedPercentageValue
	 */
	public double getFacadeTwoGlazedPercentageValue() {
		return functions.roundDecimal(facadeTwoGlazedPercentageValue, dpPercentage);
	}

	/**
	 * @return the facadeThreeGlazedPercentageValue
	 */
	public double getFacadeThreeGlazedPercentageValue() {
		return functions.roundDecimal(facadeThreeGlazedPercentageValue, dpPercentage);
	}

	/**
	 * @return the facadeFourGlazedPercentageValue
	 */
	public double getFacadeFourGlazedPercentageValue() {
		return functions.roundDecimal(facadeFourGlazedPercentageValue, dpPercentage);
	}

	/**
	 * @return the facadeOneAvgDailySolarLoadPerFloorValue
	 */
	public double getFacadeOneAvgDailySolarLoadPerFloorValue() {
		return functions.roundDecimal(facadeOneAvgDailySolarLoadPerFloorValue, dpPercentage);
	}

	/**
	 * @return the facadeTwoAvgDailySolarLoadPerFloorValue
	 */
	public double getFacadeTwoAvgDailySolarLoadPerFloorValue() {
		return functions.roundDecimal(facadeTwoAvgDailySolarLoadPerFloorValue, dpPercentage);
	}

	/**
	 * @return the facadeThreeAvgDailySolarLoadPerFloorValue
	 */
	public double getFacadeThreeAvgDailySolarLoadPerFloorValue() {
		return functions.roundDecimal(facadeThreeAvgDailySolarLoadPerFloorValue, dpPercentage);
	}

	/**
	 * @return the facadeFourAvgDailySolarLoadPerFloorValue
	 */
	public double getFacadeFourAvgDailySolarLoadPerFloorValue() {
		return functions.roundDecimal(facadeFourAvgDailySolarLoadPerFloorValue, dpPercentage);
	}

	public Panel getPanelFacadeOne() {
		return panelFacadeOne;
	}

	public void setPanelFacadeOne() {
		this.panelFacadeOne = new Panel();
		notifier.fireValueChange("panelFacadeOne");
	}
	
	public void updatePanelFacadeOne() {
		this.panelFacadeOne.setCaption(this.facadeOneOrientation + " Fa�ade");
		notifier.fireValueChange("panelFacadeOne");
	}

	public Panel getPanelFacadeTwo() {
		return panelFacadeTwo;
	}

	public void setPanelFacadeTwo() {
		this.panelFacadeTwo = new Panel();
		notifier.fireValueChange("panelFacadeTwo");
	}
	
	public void updatePanelFacadeTwo() {
		this.panelFacadeTwo.setCaption(this.facadeTwoOrientation + " Fa�ade");
		notifier.fireValueChange("panelFacadeTwo");
	}
	
	public Panel getPanelFacadeThree() {
		return panelFacadeThree;
	}

	public void setPanelFacadeThree() {
		this.panelFacadeThree = new Panel();
		notifier.fireValueChange("panelFacadeThree");
	}
	
	public void updatePanelFacadeThree() {
		this.panelFacadeThree.setCaption(this.facadeThreeOrientation + " Fa�ade");
		notifier.fireValueChange("panelFacadeThree");
	}

	public Panel getPanelFacadeFour() {
		return panelFacadeFour;
	}

	public void setPanelFacadeFour() {
		this.panelFacadeFour = new Panel();
		notifier.fireValueChange("panelFacadeFour");
	}
	
	public void updatePanelFacadeFour() {
		this.panelFacadeFour.setCaption(this.facadeFourOrientation + " Fa�ade");
		notifier.fireValueChange("panelFacadeFour");
	}

	public Panel getPanelContentDaylightFacadeOne() {
		return panelContentDaylightFacadeOne;
	}

	public void setPanelContentDaylightFacadeOne() {
		this.panelContentDaylightFacadeOne = new Panel();
		notifier.fireValueChange("panelContentDaylightFacadeOne");
	}
	
	public void setCaptionPanelContentDaylightFacadeOne() {
		this.panelContentDaylightFacadeOne.setCaption(this.facadeOneOrientation + " Fa�ade");
		notifier.fireValueChange("panelContentDaylightFacadeOne");
	}
	
	public Panel getPanelContentDaylightFacadeTwo() {
		return panelContentDaylightFacadeTwo;
	}

	public void setPanelContentDaylightFacadeTwo() {
		this.panelContentDaylightFacadeTwo = new Panel();
		notifier.fireValueChange("panelContentDaylightFacadeTwo");
	}
	
	public void setCaptionPanelContentDaylightFacadeTwo() {
		this.panelContentDaylightFacadeTwo.setCaption(this.facadeTwoOrientation + " Fa�ade");
		notifier.fireValueChange("panelContentDaylightFacadeTwo");
	}
	
	public Panel getPanelContentDaylightFacadeThree() {
		return panelContentDaylightFacadeThree;
	}

	public void setPanelContentDaylightFacadeThree() {
		this.panelContentDaylightFacadeThree = new Panel();
		notifier.fireValueChange("panelContentDaylightFacadeThree");
	}
	
	public void setCaptionPanelContentDaylightFacadeThree() {
		this.panelContentDaylightFacadeThree.setCaption(this.facadeThreeOrientation + " Fa�ade");
		notifier.fireValueChange("panelContentDaylightFacadeThree");
	}
	
	public Panel getPanelContentDaylightFacadeFour() {
		return panelContentDaylightFacadeFour;
	}

	public void setPanelContentDaylightFacadeFour() {
		this.panelContentDaylightFacadeFour = new Panel();
		notifier.fireValueChange("panelContentDaylightFacadeFour");
	}
	
	public void setCaptionPanelContentDaylightFacadeFour() {
		this.panelContentDaylightFacadeFour.setCaption(this.facadeFourOrientation + " Fa�ade");
		notifier.fireValueChange("panelContentDaylightFacadeFour");
	}

	/**
	 * @return the facadeOneWindowGlazing
	 */
	public String getFacadeOneWindowGlazing() {
		return facadeOneWindowGlazing;
	}

	/**
	 * @param facadeOneWindowGlazing the facadeOneWindowGlazing to set
	 */
	public void setFacadeOneWindowGlazing(String facadeOneWindowGlazing) {
		this.facadeOneWindowGlazing = facadeOneWindowGlazing;
		this.setFacadeOneWindowSolarTransmittance();
		notifier.fireValueChange("facadeOneWindowGlazing");
	}

	/**
	 * @return the facadeTwoWindowGlazing
	 */
	public String getFacadeTwoWindowGlazing() {
		return facadeTwoWindowGlazing;
	}

	/**
	 * @param facadeTwoWindowGlazing the facadeTwoWindowGlazing to set
	 */
	public void setFacadeTwoWindowGlazing(String facadeTwoWindowGlazing) {
		this.facadeTwoWindowGlazing = facadeTwoWindowGlazing;
		this.setFacadeTwoWindowSolarTransmittance();
		notifier.fireValueChange("facadeTwoWindowGlazing");
	}

	/**
	 * @return the facadeThreeWindowGlazing
	 */
	public String getFacadeThreeWindowGlazing() {
		return facadeThreeWindowGlazing;
	}

	/**
	 * @param facadeThreeWindowGlazing the facadeThreeWindowGlazing to set
	 */
	public void setFacadeThreeWindowGlazing(String facadeThreeWindowGlazing) {
		this.facadeThreeWindowGlazing = facadeThreeWindowGlazing;
		this.setFacadeThreeWindowSolarTransmittance();
		notifier.fireValueChange("facadeThreeWindowGlazing");
	}

	/**
	 * @return the facadeFourWindowGlazing
	 */
	public String getFacadeFourWindowGlazing() {
		return facadeFourWindowGlazing;
	}

	/**
	 * @param facadeFourWindowGlazing the facadeFourWindowGlazing to set
	 */
	public void setFacadeFourWindowGlazing(String facadeFourWindowGlazing) {
		this.facadeFourWindowGlazing = facadeFourWindowGlazing;
		this.setFacadeFourWindowSolarTransmittance();
		notifier.fireValueChange("facadeFourWindowGlazing");
	}

	/**
	 * @return the facadeOneWindowSolarTransmittance
	 */
	public double getFacadeOneWindowSolarTransmittance() {
		return facadeOneWindowSolarTransmittance;
	}

	/**
	 * @param facadeOneWindowSolarTransmittance the facadeOneWindowSolarTransmittance to set
	 */
	public void setFacadeOneWindowSolarTransmittance() {
		if (this.facadeOneWindowGlazing != null) {
			this.facadeOneWindowSolarTransmittance = windowShading.getSolarTransmittance(this.facadeOneWindowGlazing);
		} else {
			this.facadeOneWindowSolarTransmittance = 0d;
		}
		this.setFacadeOneSolarTransmittance(this.facadeOneWindowSolarTransmittance);
		notifier.fireValueChange("facadeOneWindowSolarTransmittance");
	}

	/**
	 * @return the facadeTwoWindowSolarTransmittance
	 */
	public double getFacadeTwoWindowSolarTransmittance() {
		return facadeTwoWindowSolarTransmittance;
	}

	/**
	 * @param facadeTwoWindowSolarTransmittance the facadeTwoWindowSolarTransmittance to set
	 */
	public void setFacadeTwoWindowSolarTransmittance() {
		if (this.facadeTwoWindowGlazing != null) {
			this.facadeTwoWindowSolarTransmittance = windowShading.getSolarTransmittance(this.facadeTwoWindowGlazing);
		} else {
			this.facadeTwoWindowSolarTransmittance = 0d;
		}
		this.setFacadeTwoSolarTransmittance(this.facadeTwoWindowSolarTransmittance);
		notifier.fireValueChange("facadeTwoWindowSolarTransmittance");
	}

	/**
	 * @return the facadeThreeWindowSolarTransmittance
	 */
	public double getFacadeThreeWindowSolarTransmittance() {
		return facadeThreeWindowSolarTransmittance;
	}

	/**
	 * @param facadeThreeWindowSolarTransmittance the facadeThreeWindowSolarTransmittance to set
	 */
	public void setFacadeThreeWindowSolarTransmittance() {
		if (this.facadeThreeWindowGlazing != null) {
			this.facadeThreeWindowSolarTransmittance = windowShading.getSolarTransmittance(this.facadeThreeWindowGlazing);
		} else {
			this.facadeThreeWindowSolarTransmittance = 0d;
		}
		this.setFacadeThreeSolarTransmittance(this.facadeThreeWindowSolarTransmittance);
		notifier.fireValueChange("facadeThreeWindowSolarTransmittance");
	}

	/**
	 * @return the facadeFourWindowSolarTransmittance
	 */
	public double getFacadeFourWindowSolarTransmittance() {
		return facadeFourWindowSolarTransmittance;
	}

	/**
	 * @param facadeFourWindowSolarTransmittance the facadeFourWindowSolarTransmittance to set
	 */
	public void setFacadeFourWindowSolarTransmittance() {
		if (this.facadeFourWindowGlazing != null) {
			this.facadeFourWindowSolarTransmittance = windowShading.getSolarTransmittance(this.facadeFourWindowGlazing);
		} else {
			this.facadeFourWindowSolarTransmittance = 0d;
		}
		this.setFacadeFourSolarTransmittance(this.facadeFourWindowSolarTransmittance);
		notifier.fireValueChange("facadeFourWindowSolarTransmittance");
	}

	/**
	 * @return the facadeOneWindowShadingType
	 */
	public String getFacadeOneWindowShadingType() {
		return facadeOneWindowShadingType;
	}

	/**
	 * @param facadeOneWindowShadingType the facadeOneWindowShadingType to set
	 */
	public void setFacadeOneWindowShadingType(String facadeOneWindowShadingType) {
		this.facadeOneWindowShadingType = facadeOneWindowShadingType;
		if (facadeOneWindowShadingType.equals(HEL) || facadeOneWindowShadingType.equals(NONE)) {
			this.setFacadeOneWindowShadingDepth(0.0d);
		} else {
			this.setFacadeOneWindowRatio();
			this.setFacadeOneShadingFactor();
		}
		notifier.fireValueChange("facadeOneWindowShadingType");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingType(0, this.facadeOneWindowShadingType);}
	}

	/**
	 * @return the facadeTwoWindowShadingType
	 */
	public String getFacadeTwoWindowShadingType() {
		return facadeTwoWindowShadingType;
	}

	/**
	 * @param facadeTwoWindowShadingType the facadeTwoWindowShadingType to set
	 */
	public void setFacadeTwoWindowShadingType(String facadeTwoWindowShadingType) {
		this.facadeTwoWindowShadingType = facadeTwoWindowShadingType;
		if (facadeTwoWindowShadingType.equals(HEL) || facadeTwoWindowShadingType.equals(NONE)) {
			this.setFacadeTwoWindowShadingDepth(0.0d);
		} else {
			this.setFacadeTwoWindowRatio();
			this.setFacadeTwoShadingFactor();
		}
		notifier.fireValueChange("facadeTwoWindowShadingType");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingType(1, this.facadeTwoWindowShadingType);}
	}

	/**
	 * @return the facadeThreeWindowShadingType
	 */
	public String getFacadeThreeWindowShadingType() {
		return facadeThreeWindowShadingType;
	}

	/**
	 * @param facadeThreeWindowShadingType the facadeThreeWindowShadingType to set
	 */
	public void setFacadeThreeWindowShadingType(String facadeThreeWindowShadingType) {
		this.facadeThreeWindowShadingType = facadeThreeWindowShadingType;
		if (facadeThreeWindowShadingType.equals(HEL) || facadeThreeWindowShadingType.equals(NONE)) {
			this.setFacadeThreeWindowShadingDepth(0.0d);
		} else {
			this.setFacadeThreeWindowRatio();
			this.setFacadeThreeShadingFactor();
		}
		notifier.fireValueChange("facadeThreeWindowShadingType");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingType(2, this.facadeThreeWindowShadingType);}
	}

	/**
	 * @return the facadeFourWindowShadingType
	 */
	public String getFacadeFourWindowShadingType() {
		return facadeFourWindowShadingType;
	}

	/**
	 * @param facadeFourWindowShadingType the facadeFourWindowShadingType to set
	 */
	public void setFacadeFourWindowShadingType(String facadeFourWindowShadingType) {
		this.facadeFourWindowShadingType = facadeFourWindowShadingType;
		if (facadeFourWindowShadingType.equals(HEL) || facadeFourWindowShadingType.equals(NONE)) {
			this.setFacadeFourWindowShadingDepth(0.0d);
		} else {
			this.setFacadeFourWindowRatio();
			this.setFacadeFourShadingFactor();
		}
		notifier.fireValueChange("facadeFourWindowShadingType");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingType(3, this.facadeFourWindowShadingType);}
	}

	/**
	 * @return the facadeOneWindowConfig
	 */
	public String getFacadeOneWindowConfig() {
		return facadeOneWindowConfig;
	}

	/**
	 * @param facadeOneWindowConfig the facadeOneWindowConfig to set
	 */
	public void setFacadeOneWindowConfig(String facadeOneWindowConfig) {
		this.facadeOneWindowConfig = facadeOneWindowConfig;
		this.setFacadeOneWindowRatio();
		this.setFacadeOneShadingFactor();
		notifier.fireValueChange("facadeOneWindowConfig");
		if (saveValues) {this.projectInstance.setFacadeWindowConfig(0, this.facadeOneWindowConfig);}
	}

	/**
	 * @return the facadeTwoWindowConfig
	 */
	public String getFacadeTwoWindowConfig() {
		return facadeTwoWindowConfig;
	}

	/**
	 * @param facadeTwoWindowConfig the facadeTwoWindowConfig to set
	 */
	public void setFacadeTwoWindowConfig(String facadeTwoWindowConfig) {
		this.facadeTwoWindowConfig = facadeTwoWindowConfig;
		this.setFacadeTwoWindowRatio();
		this.setFacadeTwoShadingFactor();
		notifier.fireValueChange("facadeTwoWindowConfig");
		if (saveValues) {this.projectInstance.setFacadeWindowConfig(1, this.facadeTwoWindowConfig);}
	}

	/**
	 * @return the facadeThreeWindowConfig
	 */
	public String getFacadeThreeWindowConfig() {
		return facadeThreeWindowConfig;
	}

	/**
	 * @param facadeThreeWindowConfig the facadeThreeWindowConfig to set
	 */
	public void setFacadeThreeWindowConfig(String facadeThreeWindowConfig) {
		this.facadeThreeWindowConfig = facadeThreeWindowConfig;
		this.setFacadeThreeWindowRatio();
		this.setFacadeThreeShadingFactor();
		notifier.fireValueChange("facadeThreeWindowConfig");
		if (saveValues) {this.projectInstance.setFacadeWindowConfig(2, this.facadeThreeWindowConfig);}
	}

	/**
	 * @return the facadeFourWindowConfig
	 */
	public String getFacadeFourWindowConfig() {
		return facadeFourWindowConfig;
	}

	/**
	 * @param facadeFourWindowConfig the facadeFourWindowConfig to set
	 */
	public void setFacadeFourWindowConfig(String facadeFourWindowConfig) {
		this.facadeFourWindowConfig = facadeFourWindowConfig;
		this.setFacadeFourWindowRatio();
		this.setFacadeFourShadingFactor();
		notifier.fireValueChange("facadeFourWindowConfig");
		if (saveValues) {this.projectInstance.setFacadeWindowConfig(3, this.facadeFourWindowConfig);}
	}

	/**
	 * @return the facadeOneWindowShadingDepth
	 */
	public double getFacadeOneWindowShadingDepth() {
		return facadeOneWindowShadingDepth;
	}

	/**
	 * @param facadeOneWindowShadingDepth the facadeOneWindowShadingDepth to set
	 */
	public void setFacadeOneWindowShadingDepth(double facadeOneWindowShadingDepth) {
		this.facadeOneWindowShadingDepth = facadeOneWindowShadingDepth;
		this.setFacadeOneWindowRatio();
		this.setFacadeOneShadingFactor();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeOne, i);
		}
		notifier.fireValueChange("facadeOneWindowShadingDepth");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingDepth(0, this.facadeOneWindowShadingDepth);}
	}

	/**
	 * @return the facadeTwoWindowShadingDepth
	 */
	public double getFacadeTwoWindowShadingDepth() {
		return facadeTwoWindowShadingDepth;
	}

	/**
	 * @param facadeTwoWindowShadingDepth the facadeTwoWindowShadingDepth to set
	 */
	public void setFacadeTwoWindowShadingDepth(double facadeTwoWindowShadingDepth) {
		this.facadeTwoWindowShadingDepth = facadeTwoWindowShadingDepth;
		this.setFacadeTwoWindowRatio();
		this.setFacadeTwoShadingFactor();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeTwo, i);
		}
		notifier.fireValueChange("facadeTwoWindowShadingDepth");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingDepth(1, this.facadeTwoWindowShadingDepth);}
	}

	/**
	 * @return the facadeThreeWindowShadingDepth
	 */
	public double getFacadeThreeWindowShadingDepth() {
		return facadeThreeWindowShadingDepth;
	}

	/**
	 * @param facadeThreeWindowShadingDepth the facadeThreeWindowShadingDepth to set
	 */
	public void setFacadeThreeWindowShadingDepth(double facadeThreeWindowShadingDepth) {
		this.facadeThreeWindowShadingDepth = facadeThreeWindowShadingDepth;
		this.setFacadeThreeWindowRatio();
		this.setFacadeThreeShadingFactor();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeThree, i);
		}
		notifier.fireValueChange("facadeThreeWindowShadingDepth");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingDepth(2, this.facadeThreeWindowShadingDepth);}
	}

	/**
	 * @return the facadeFourWindowShadingDepth
	 */
	public double getFacadeFourWindowShadingDepth() {
		return facadeFourWindowShadingDepth;
	}

	/**
	 * @param facadeFourWindowShadingDepth the facadeFourWindowShadingDepth to set
	 */
	public void setFacadeFourWindowShadingDepth(double facadeFourWindowShadingDepth) {
		this.facadeFourWindowShadingDepth = facadeFourWindowShadingDepth;
		this.setFacadeFourWindowRatio();
		this.setFacadeFourShadingFactor();
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeFour, i);
		}
		notifier.fireValueChange("facadeFourWindowShadingDepth");
		if (saveValues) {this.projectInstance.setFacadeWindowShadingDepth(3, this.facadeFourWindowShadingDepth);}
	}

	/**
	 * @return the facadeOneShadingAngle
	 */
	public String getFacadeOneShadingAngle() {
		return facadeOneShadingAngle;
	}

	/**
	 * @param facadeOneShadingAngle the facadeOneShadingAngle to set
	 */
	public void setFacadeOneShadingAngle(String facadeOneShadingAngle) {
		this.facadeOneShadingAngle = facadeOneShadingAngle;
		this.setFacadeOneShadingAngleVal();
		this.setFacadeOneWindowRatio();
		this.setFacadeOneShadingFactor();
		notifier.fireValueChange("facadeOneShadingAngle");
		if (saveValues) {this.projectInstance.setFacadeShadingAngle(0, this.facadeOneShadingAngle);}
	}

	/**
	 * @return the facadeTwoShadingAngle
	 */
	public String getFacadeTwoShadingAngle() {
		return facadeTwoShadingAngle;
	}

	/**
	 * @param facadeTwoShadingAngle the facadeTwoShadingAngle to set
	 */
	public void setFacadeTwoShadingAngle(String facadeTwoShadingAngle) {
		this.facadeTwoShadingAngle = facadeTwoShadingAngle;
		this.setFacadeTwoShadingAngleVal();
		this.setFacadeTwoWindowRatio();
		this.setFacadeTwoShadingFactor();
		notifier.fireValueChange("facadeTwoShadingAngle");
		if (saveValues) {this.projectInstance.setFacadeShadingAngle(1, this.facadeTwoShadingAngle);}
		
	}

	/**
	 * @return the facadeThreeShadingAngle
	 */
	public String getFacadeThreeShadingAngle() {
		return facadeThreeShadingAngle;
	}

	/**
	 * @param facadeThreeShadingAngle the facadeThreeShadingAngle to set
	 */
	public void setFacadeThreeShadingAngle(String facadeThreeShadingAngle) {
		this.facadeThreeShadingAngle = facadeThreeShadingAngle;
		this.setFacadeThreeShadingAngleVal();
		this.setFacadeThreeWindowRatio();
		this.setFacadeThreeShadingFactor();
		notifier.fireValueChange("facadeThreeShadingAngle");
		if (saveValues) {this.projectInstance.setFacadeShadingAngle(2, this.facadeThreeShadingAngle);}
	}

	/**
	 * @return the facadeFourShadingAngle
	 */
	public String getFacadeFourShadingAngle() {
		return facadeFourShadingAngle;
	}

	/**
	 * @param facadeFourShadingAngle the facadeFourShadingAngle to set
	 */
	public void setFacadeFourShadingAngle(String facadeFourShadingAngle) {
		this.facadeFourShadingAngle = facadeFourShadingAngle;		
		this.setFacadeFourShadingAngleVal();
		this.setFacadeFourWindowRatio();
		this.setFacadeFourShadingFactor();
		notifier.fireValueChange("facadeFourShadingAngle");
		if (saveValues) {this.projectInstance.setFacadeShadingAngle(3, this.facadeFourShadingAngle);}
	}

	/**
	 * @return the facadeOneShadingAngleVal
	 */
	public double getFacadeOneShadingAngleVal() {
		return facadeOneShadingAngleVal;
	}

	/**
	 * @param facadeOneShadingAngleVal the facadeOneShadingAngleVal to set
	 */
	public void setFacadeOneShadingAngleVal() {
		if (this.facadeOneShadingAngle != null) {
			this.facadeOneShadingAngleVal = windowShading.getShadingAngle(facadeOneShadingAngle);
		} else {
			this.facadeOneShadingAngleVal = 0d;
		}
		notifier.fireValueChange("facadeOneShadingAngleVal");
	}

	/**
	 * @return the facadeTwoShadingAngleVal
	 */
	public double getFacadeTwoShadingAngleVal() {
		return facadeTwoShadingAngleVal;
	}

	/**
	 * @param facadeTwoShadingAngleVal the facadeTwoShadingAngleVal to set
	 */
	public void setFacadeTwoShadingAngleVal() {
		if (this.facadeTwoShadingAngle != null) {
			this.facadeTwoShadingAngleVal = windowShading.getShadingAngle(facadeTwoShadingAngle);
		} else {
			this.facadeTwoShadingAngleVal = 0d;
		}
		notifier.fireValueChange("facadeTwoShadingAngleVal");
	}

	/**
	 * @return the facadeThreeShadingAngleVal
	 */
	public double getFacadeThreeShadingAngleVal() {
		return facadeThreeShadingAngleVal;
	}

	/**
	 * @param facadeThreeShadingAngleVal the facadeThreeShadingAngleVal to set
	 */
	public void setFacadeThreeShadingAngleVal() {
		if (this.facadeThreeShadingAngle != null) {
			this.facadeThreeShadingAngleVal = windowShading.getShadingAngle(facadeThreeShadingAngle);
		} else {
			this.facadeThreeShadingAngleVal = 0d;
		}
		notifier.fireValueChange("facadeThreeShadingAngleVal");
	}

	/**
	 * @return the facadeFourShadingAngleVal
	 */
	public double getFacadeFourShadingAngleVal() {
		return facadeFourShadingAngleVal;
	}

	/**
	 * @param facadeFourShadingAngleVal the facadeFourShadingAngleVal to set
	 */
	public void setFacadeFourShadingAngleVal() {
		if (this.facadeFourShadingAngle != null) {
			this.facadeFourShadingAngleVal = windowShading.getShadingAngle(facadeFourShadingAngle);
		} else {
			this.facadeFourShadingAngleVal = 0d;
		}
		notifier.fireValueChange("facadeFourShadingAngleVal");
	}

	/**
	 * @return the facadeOneLouvreColour
	 */
	public String getFacadeOneLouvreColour() {
		return facadeOneLouvreColour;
	}

	/**
	 * @param facadeOneLouvreColour the facadeOneLouvreColour to set
	 */
	public void setFacadeOneLouvreColour(String facadeOneLouvreColour) {
		this.facadeOneLouvreColour = facadeOneLouvreColour;
		this.setFacadeOneWindowRatio();
		this.setFacadeOneShadingFactor();
		notifier.fireValueChange("facadeOneLouvreColour");
		if (saveValues) {this.projectInstance.setFacadeLouvreColour(0, this.facadeOneLouvreColour);}
	}

	/**
	 * @return the facadeTwoLouvreColour
	 */
	public String getFacadeTwoLouvreColour() {
		return facadeTwoLouvreColour;
	}

	/**
	 * @param facadeTwoLouvreColour the facadeTwoLouvreColour to set
	 */
	public void setFacadeTwoLouvreColour(String facadeTwoLouvreColour) {
		this.facadeTwoLouvreColour = facadeTwoLouvreColour;
		this.setFacadeTwoWindowRatio();
		this.setFacadeTwoShadingFactor();
		notifier.fireValueChange("facadeTwoLouvreColour");
		if (saveValues) {this.projectInstance.setFacadeLouvreColour(1, this.facadeTwoLouvreColour);}
	}

	/**
	 * @return the facadeThreeLouvreColour
	 */
	public String getFacadeThreeLouvreColour() {
		return facadeThreeLouvreColour;
	}

	/**
	 * @param facadeThreeLouvreColour the facadeThreeLouvreColour to set
	 */
	public void setFacadeThreeLouvreColour(String facadeThreeLouvreColour) {
		this.facadeThreeLouvreColour = facadeThreeLouvreColour;
		this.setFacadeThreeWindowRatio();
		this.setFacadeThreeShadingFactor();
		notifier.fireValueChange("facadeThreeLouvreColour");
		if (saveValues) {this.projectInstance.setFacadeLouvreColour(2, this.facadeThreeLouvreColour);}
	}

	/**
	 * @return the facadeFourLouvreColour
	 */
	public String getFacadeFourLouvreColour() {
		return facadeFourLouvreColour;
	}

	/**
	 * @param facadeFourLouvreColour the facadeFourLouvreColour to set
	 */
	public void setFacadeFourLouvreColour(String facadeFourLouvreColour) {
		this.facadeFourLouvreColour = facadeFourLouvreColour;
		this.setFacadeFourWindowRatio();
		this.setFacadeFourShadingFactor();
		notifier.fireValueChange("facadeFourLouvreColour");
		if (saveValues) {this.projectInstance.setFacadeLouvreColour(3, this.facadeFourLouvreColour);}
	}

	/**
	 * @return the facadeOneSlatAngle
	 */
	public String getFacadeOneSlatAngle() {
		return facadeOneSlatAngle;
	}

	/**
	 * @param facadeOneSlatAngle the facadeOneSlatAngle to set
	 */
	public void setFacadeOneSlatAngle(String facadeOneSlatAngle) {
		this.facadeOneSlatAngle = facadeOneSlatAngle;
		this.setFacadeOneSlatAngleVal();
		this.setFacadeOneWindowRatio();
		this.setFacadeOneShadingFactor();
		notifier.fireValueChange("facadeOneSlatAngle");
		if (saveValues) {this.projectInstance.setFacadeSlatAngle(0, this.facadeOneSlatAngle);}
	}

	/**
	 * @return the facadeTwoSlatAngle
	 */
	public String getFacadeTwoSlatAngle() {
		return facadeTwoSlatAngle;
	}

	/**
	 * @param facadeTwoSlatAngle the facadeTwoSlatAngle to set
	 */
	public void setFacadeTwoSlatAngle(String facadeTwoSlatAngle) {
		this.facadeTwoSlatAngle = facadeTwoSlatAngle;
		this.setFacadeTwoSlatAngleVal();
		this.setFacadeTwoWindowRatio();
		this.setFacadeTwoShadingFactor();
		notifier.fireValueChange("facadeTwoSlatAngle");
		if (saveValues) {this.projectInstance.setFacadeSlatAngle(1, this.facadeTwoSlatAngle);}
	}

	/**
	 * @return the facadeThreeSlatAngle
	 */
	public String getFacadeThreeSlatAngle() {
		return facadeThreeSlatAngle;
	}

	/**
	 * @param facadeThreeSlatAngle the facadeThreeSlatAngle to set
	 */
	public void setFacadeThreeSlatAngle(String facadeThreeSlatAngle) {
		this.facadeThreeSlatAngle = facadeThreeSlatAngle;
		this.setFacadeThreeSlatAngleVal();
		this.setFacadeThreeWindowRatio();
		this.setFacadeThreeShadingFactor();
		notifier.fireValueChange("facadeThreeSlatAngle");
		if (saveValues) {this.projectInstance.setFacadeSlatAngle(2, this.facadeThreeSlatAngle);}
	}

	/**
	 * @return the facadeFourSlatAngle
	 */
	public String getFacadeFourSlatAngle() {
		return facadeFourSlatAngle;
	}

	/**
	 * @param facadeFourSlatAngle the facadeFourSlatAngle to set
	 */
	public void setFacadeFourSlatAngle(String facadeFourSlatAngle) {
		this.facadeFourSlatAngle = facadeFourSlatAngle;
		this.setFacadeFourSlatAngleVal();
		this.setFacadeFourWindowRatio();
		this.setFacadeFourShadingFactor();
		notifier.fireValueChange("facadeFourSlatAngle");
		if (saveValues) {this.projectInstance.setFacadeSlatAngle(3, this.facadeFourSlatAngle);}
	}

	/**
	 * @return the facadeOneSlatAngleVal
	 */
	public double getFacadeOneSlatAngleVal() {
		return facadeOneSlatAngleVal;
	}

	/**
	 * @param facadeOneSlatAngleVal the facadeOneSlatAngleVal to set
	 */
	public void setFacadeOneSlatAngleVal() {
		if (this.facadeOneSlatAngle != null) {
			this.facadeOneSlatAngleVal = windowShading.getShadingAngle(facadeOneSlatAngle);
		} else {
			this.facadeOneSlatAngleVal = 0d;
		}
		notifier.fireValueChange("facadeOneSlatAngleVal");
	}

	/**
	 * @return the facadeTwoSlatAngleVal
	 */
	public double getFacadeTwoSlatAngleVal() {
		return facadeTwoSlatAngleVal;
	}

	/**
	 * @param facadeTwoSlatAngleVal the facadeTwoSlatAngleVal to set
	 */
	public void setFacadeTwoSlatAngleVal() {
		if (this.facadeTwoSlatAngle != null) {
			this.facadeTwoSlatAngleVal = windowShading.getShadingAngle(facadeTwoSlatAngle);
		} else {
			this.facadeTwoSlatAngleVal = 0d;
		}
		notifier.fireValueChange("facadeTwoSlatAngleVal");
	}

	/**
	 * @return the facadeThreeSlatAngleVal
	 */
	public double getFacadeThreeSlatAngleVal() {
		return facadeThreeSlatAngleVal;
	}

	/**
	 * @param facadeThreeSlatAngleVal the facadeThreeSlatAngleVal to set
	 */
	public void setFacadeThreeSlatAngleVal() {
		if (this.facadeThreeSlatAngle != null) {
			this.facadeThreeSlatAngleVal = windowShading.getShadingAngle(facadeThreeSlatAngle);
		} else {
			this.facadeThreeSlatAngleVal = 0d;
		}
		notifier.fireValueChange("facadeThreeSlatAngleVal");
	}

	/**
	 * @return the facadeFourSlatAngleVal
	 */
	public double getFacadeFourSlatAngleVal() {
		return facadeFourSlatAngleVal;
	}

	/**
	 * @param facadeFourSlatAngleVal the facadeFourSlatAngleVal to set
	 */
	public void setFacadeFourSlatAngleVal() {
		if (this.facadeFourSlatAngle != null) {
			this.facadeFourSlatAngleVal = windowShading.getShadingAngle(facadeFourSlatAngle);
		} else {
			this.facadeFourSlatAngleVal = 0d;
		}
		notifier.fireValueChange("facadeFourSlatAngleVal");
	}

	/**
	 * @return the facadeOneWindowRatio
	 */
	public double getFacadeOneWindowRatio() {
		return facadeOneWindowRatio;
	}

	/**
	 * @param facadeOneWindowRatio the facadeOneWindowRatio to set
	 */
	public void setFacadeOneWindowRatio() {

		if (this.facadeOneWindowShadingType == null || this.facadeOneWindowShadingType.equals(NONE))
			this.facadeOneWindowRatio = 0.0;
		
		if (this.facadeOneWindowShadingType.equals(HSCO)) {
			//TODO: the below calcs are correct but need to be done 
			this.facadeOneWindowRatio = this.facadeOneWindowShadingDepth / (this.facadeOneWindowHH00 - this.facadeOneWindowCH00);
			this.facadeOneWindowRatio = functions.roundDecimal(this.facadeOneWindowRatio, 1);
		}
		
		//P5/((Daylighting!G5-Daylighting!G6)-(TAN(P6*PI()/180)*P5))
		if (this.facadeOneWindowShadingType.equals(SSCO)) {
			this.facadeOneWindowRatio = this.facadeOneWindowShadingDepth / 
					((this.facadeOneWindowHH00 - this.facadeOneWindowCH00) - 
							(Math.tan(this.facadeOneShadingAngleVal * Math.PI / 180) * this.facadeOneWindowShadingDepth));
			//System.out.println("facadeOneWindowRatio | depth: " + this.facadeOneWindowShadingDepth + " | angle: " + this.facadeOneShadingAngleVal + " | " + this.facadeOneWindowRatio);
			this.facadeOneWindowRatio = functions.roundDecimal(this.facadeOneWindowRatio, 1);
		}
		
		// these checks must be before the windowshadingType check below
		if (this.facadeOneWindowRatio > 1.2)
			this.facadeOneWindowRatio = 1.2;
		
		if (this.facadeOneWindowRatio < 0.0)
			this.facadeOneWindowRatio = 1.2;
		
		if (this.facadeOneWindowShadingType.equals(HEL))
			this.facadeOneWindowRatio = this.facadeOneSlatAngleVal;
		
		notifier.fireValueChange("facadeOneWindowRatio");
	}

	/**
	 * @return the facadeTwoWindowRatio
	 */
	public double getFacadeTwoWindowRatio() {
		return facadeTwoWindowRatio;
	}

	/**
	 * @param facadeTwoWindowRatio the facadeTwoWindowRatio to set
	 */
	public void setFacadeTwoWindowRatio() {

		if (this.facadeTwoWindowShadingType == null || this.facadeTwoWindowShadingType.equals(NONE))
			this.facadeTwoWindowRatio = 0.0;
		
		if (this.facadeTwoWindowShadingType.equals(HSCO)) {
			this.facadeTwoWindowRatio = this.facadeTwoWindowShadingDepth / (this.facadeTwoWindowHH00 - this.facadeTwoWindowCH00);
			this.facadeTwoWindowRatio = functions.roundDecimal(this.facadeTwoWindowRatio, 1);
		}
		
		//P5/((Daylighting!G5-Daylighting!G6)-(TAN(P6*PI()/180)*P5))
		if (this.facadeTwoWindowShadingType.equals(SSCO)) {
			this.facadeTwoWindowRatio = this.facadeTwoWindowShadingDepth / 
					((this.facadeTwoWindowHH00 - this.facadeTwoWindowCH00) - 
							(Math.tan(this.facadeTwoShadingAngleVal * Math.PI / 180) * this.facadeTwoWindowShadingDepth));
			//System.out.println("facadeTwoWindowRatio | depth: " + this.facadeTwoWindowShadingDepth + " | angle: " + this.facadeTwoShadingAngleVal + " | " + this.facadeTwoWindowRatio);
			this.facadeTwoWindowRatio = functions.roundDecimal(this.facadeTwoWindowRatio, 1);
		}
		
		// these checks must be before the windowshadingType check below
		if (this.facadeTwoWindowRatio > 1.2)
			this.facadeTwoWindowRatio = 1.2;
		
		if (this.facadeTwoWindowRatio < 0.0)
			this.facadeTwoWindowRatio = 1.2;
		
		if (this.facadeTwoWindowShadingType.equals(HEL))
			this.facadeTwoWindowRatio = this.facadeTwoSlatAngleVal;
		
		notifier.fireValueChange("facadeTwoWindowRatio");
		
	}

	/**
	 * @return the facadeThreeWindowRatio
	 */
	public double getFacadeThreeWindowRatio() {
		return facadeThreeWindowRatio;
	}

	/**
	 * @param facadeThreeWindowRatio the facadeThreeWindowRatio to set
	 */
	public void setFacadeThreeWindowRatio() {

		if (this.facadeThreeWindowShadingType == null || this.facadeThreeWindowShadingType.equals(NONE))
			this.facadeThreeWindowRatio = 0.0;
		
		if (this.facadeThreeWindowShadingType.equals(HSCO)) {
			this.facadeThreeWindowRatio = this.facadeThreeWindowShadingDepth / (this.facadeThreeWindowHH00 - this.facadeThreeWindowCH00);
		}
		
		if (this.facadeThreeWindowShadingType.equals(SSCO)) {
			this.facadeThreeWindowRatio = this.facadeThreeWindowShadingDepth / 
					((this.facadeThreeWindowHH00 - this.facadeThreeWindowCH00) - 
							(Math.tan(this.facadeThreeShadingAngleVal * Math.PI / 180) * this.facadeThreeWindowShadingDepth));
		}
		
		this.facadeThreeWindowRatio = functions.roundDecimal(this.facadeThreeWindowRatio, 1);
		
		// these checks must be before the windowshadingType check below to avoid setting the 
		// louvre values incorrectly
		if (this.facadeThreeWindowRatio > 1.2)
			this.facadeThreeWindowRatio = 1.2;
		
		if (this.facadeThreeWindowRatio < 0.0)
			this.facadeThreeWindowRatio = 1.2;
		
		if (this.facadeThreeWindowShadingType.equals(HEL))
			this.facadeThreeWindowRatio = this.facadeThreeSlatAngleVal;
		
		notifier.fireValueChange("facadeThreeWindowRatio");
		
	}

	/**
	 * @return the facadeFourWindowRatio
	 */
	public double getFacadeFourWindowRatio() {
		return facadeFourWindowRatio;
	}

	/**
	 * @param facadeFourWindowRatio the facadeFourWindowRatio to set
	 */
	public void setFacadeFourWindowRatio() {

		if (this.facadeFourWindowShadingType == null || this.facadeFourWindowShadingType.equals(NONE))
			this.facadeFourWindowRatio = 0.0;
		
		if (this.facadeFourWindowShadingType.equals(HSCO)) {//TODO: facadeFourWindowHH00 & facadeFourWindowCH00 should be per floor?
			this.facadeFourWindowRatio = this.facadeFourWindowShadingDepth / (this.facadeFourWindowHH00 - this.facadeFourWindowCH00);
			this.facadeFourWindowRatio = functions.roundDecimal(this.facadeFourWindowRatio, 1);
		}
		
		//P5/((Daylighting!G5-Daylighting!G6)-(TAN(P6*PI()/180)*P5))
		if (this.facadeFourWindowShadingType.equals(SSCO)) {
			this.facadeFourWindowRatio = this.facadeFourWindowShadingDepth / 
					((this.facadeFourWindowHH00 - this.facadeFourWindowCH00) - 
							(Math.tan(this.facadeFourShadingAngleVal * Math.PI / 180) * this.facadeFourWindowShadingDepth));
			//System.out.println("facadeFourWindowRatio | depth: " + this.facadeFourWindowShadingDepth + " | angle: " + this.facadeFourShadingAngleVal + " | " + this.facadeFourWindowRatio);
			this.facadeFourWindowRatio = functions.roundDecimal(this.facadeFourWindowRatio, 1);
		}
		
		//System.out.println(facadeFourWindowRatio);
		// these checks must be before the windowshadingType check below
		if (this.facadeFourWindowRatio > 1.2)
			this.facadeFourWindowRatio = 1.2;
		
		// if the calculated value is negative treat it as max
		if (this.facadeFourWindowRatio < 0.0)
			this.facadeFourWindowRatio = 1.2;
		
		if (this.facadeFourWindowShadingType.equals(HEL))
			this.facadeFourWindowRatio = this.facadeFourSlatAngleVal;
		
		notifier.fireValueChange("facadeFourWindowRatio");
		
	}
	

	/**
	 * @return the facadeOneWindowHH
	 */
	public double[] getFacadeOneWindowHH() {
		return facadeOneWindowHH;
	}
	
	/**
	 * @param facadeOneWindowHH the facadeOneWindowHH to set
	 */
	public void setFacadeOneWindowHH(int floorNum, 
			double facadeOneWindowHH) {
		this.facadeOneWindowHH[floorNum] = facadeOneWindowHH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeOne, i);
			this.setFloorAngleY(facadeOne, i);
		}
		
	}

	/**
	 * @return the facadeOneWindowCH
	 */
	public double[] getFacadeOneWindowCH() {
		return facadeOneWindowCH;
	}

	/**
	 * @param facadeOneWindowCH the facadeOneWindowCH to set
	 */
	public void setFacadeOneWindowCH(int floorNum,
			double facadeOneWindowCH) {
		this.facadeOneWindowCH[floorNum] = facadeOneWindowCH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeOne, i);
			this.setFloorAngleY(facadeOne, i);
		}
	}

	/**
	 * @return the facadeOneWindowRV
	 */
	public double[] getFacadeOneWindowRV() {
		return facadeOneWindowRV;
	}

	/**
	 * @param facadeOneWindowRV the facadeOneWindowRV to set
	 */
	public void setFacadeOneWindowRV(int floorNum, 
			double facadeOneWindowRV) {
		this.facadeOneWindowRV[floorNum] = facadeOneWindowRV;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeOne, i);
			this.setFloorAngleY(facadeOne, i);
		}
	}


	/**
	 * @return the facadeTwoWindowHH
	 */
	public double[] getFacadeTwoWindowHH() {
		return facadeTwoWindowHH;
	}

	/**
	 * @param facadeTwoWindowHH the facadeTwoWindowHH to set
	 */
	public void setFacadeTwoWindowHH(int floorNum, 
			double facadeTwoWindowHH) {
		this.facadeTwoWindowHH[floorNum] = facadeTwoWindowHH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeTwo, i);
			this.setFloorAngleY(facadeTwo, i);
		}
	}

	/**
	 * @return the facadeTwoWindowCH
	 */
	public double[] getFacadeTwoWindowCH() {
		return facadeTwoWindowCH;
	}

	/**
	 * @param facadeTwoWindowCH the facadeTwoWindowCH to set
	 */
	public void setFacadeTwoWindowCH(int floorNum, 
			double facadeTwoWindowCH) {
		this.facadeTwoWindowCH[floorNum] = facadeTwoWindowCH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeTwo, i);
			this.setFloorAngleY(facadeTwo, i);
		}
	}

	/**
	 * @return the facadeTwoWindowRV
	 */
	public double[] getFacadeTwoWindowRV() {
		return facadeTwoWindowRV;
	}

	/**
	 * @param facadeTwoWindowRV the facadeTwoWindowRV to set
	 */
	public void setFacadeTwoWindowRV(int floorNum, 
			double facadeTwoWindowRV) {
		this.facadeTwoWindowRV[floorNum] = facadeTwoWindowRV;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeTwo, i);
			this.setFloorAngleY(facadeTwo, i);
		}
	}


	/**
	 * @return the facadeThreeWindowHH
	 */
	public double[] getFacadeThreeWindowHH() {
		return facadeThreeWindowHH;
	}

	/**
	 * @param facadeThreeWindowHH the facadeThreeWindowHH to set
	 */
	public void setFacadeThreeWindowHH(int floorNum, 
			double facadeThreeWindowHH) {
		this.facadeThreeWindowHH[floorNum] = facadeThreeWindowHH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeThree, i);
			this.setFloorAngleY(facadeThree, i);
		}
	}

	/**
	 * @return the facadeThreeWindowCH
	 */
	public double[] getFacadeThreeWindowCH() {
		return facadeThreeWindowCH;
	}

	/**
	 * @param facadeThreeWindowCH the facadeThreeWindowCH to set
	 */
	public void setFacadeThreeWindowCH(int floorNum,
			double facadeThreeWindowCH) {
		this.facadeThreeWindowCH[floorNum] = facadeThreeWindowCH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeThree, i);
			this.setFloorAngleY(facadeThree, i);
		}
	}

	/**
	 * @return the facadeThreeWindowRV
	 */
	public double[] getFacadeThreeWindowRV() {
		return facadeThreeWindowRV;
	}

	/**
	 * @param facadeThreeWindowRV the facadeThreeWindowRV to set
	 */
	public void setFacadeThreeWindowRV(int floorNum,
			double facadeThreeWindowRV) {
		this.facadeThreeWindowRV[floorNum] = facadeThreeWindowRV;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeThree, i);
			this.setFloorAngleY(facadeThree, i);
		}
	}


	/**
	 * @return the facadeFourWindowHH
	 */
	public double[] getFacadeFourWindowHH() {
		return facadeFourWindowHH;
	}

	/**
	 * @param facadeFourWindowHH the facadeFourWindowHH to set
	 */
	public void setFacadeFourWindowHH(int floorNum,
			double facadeFourWindowHH) {
		this.facadeFourWindowHH[floorNum] = facadeFourWindowHH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeFour, i);
			this.setFloorAngleY(facadeFour, i);
		}
	}

	/**
	 * @return the facadeFourWindowCH
	 */
	public double[] getFacadeFourWindowCH() {
		return facadeFourWindowCH;
	}

	/**
	 * @param facadeFourWindowCH the facadeFourWindowCH to set
	 */
	public void setFacadeFourWindowCH(int floorNum,
			double facadeFourWindowCH) {
		this.facadeFourWindowCH[floorNum] = facadeFourWindowCH;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeFour, i);
			this.setFloorAngleY(facadeFour, i);
		}
	}

	/**
	 * @return the facadeFourWindowRV
	 */
	public double[] getFacadeFourWindowRV() {
		return facadeFourWindowRV;
	}

	/**
	 * @param facadeFourWindowRV the facadeFourWindowRV to set
	 */
	public void setFacadeFourWindowRV(int floorNum,
			double facadeFourWindowRV) {
		this.facadeFourWindowRV[floorNum] = facadeFourWindowRV;
		for (int i = 0; i < this.storeys; i++) {
			this.setFloorAngleX(facadeFour, i);
			this.setFloorAngleY(facadeFour, i);
		}
	}

	
	/**
	 * @return the facadeOneVertAngleX
	 */
	public double[][] getFacadeOneVertAngleX() {
		return facadeOneVertAngleX;
	}

	/**
	 * @param facadeOneVertAngleX the facadeOneVertAngleX to set
	 */
	public void setFacadeOneVertAngleX(int position,
			double facadeOneVertAngleX) {
		this.facadeOneVertAngleX[position][0] = facadeOneVertAngleX;
	}

	/**
	 * @return the facadeOneVertAngleY
	 */
	public double[][] getFacadeOneVertAngleY() {
		return facadeOneVertAngleY;
	}

	/**
	 * @param facadeOneVertAngleY the facadeOneVertAngleY to set
	 */
	public void setFacadeOneVertAngleY(int position,
			double facadeOneVertAngleY) {
		this.facadeOneVertAngleY[position][0] = facadeOneVertAngleY;
	}

	/**
	 * @return the facadeOneVertAngleZ
	 */
	public double[][] getFacadeOneVertAngleZ() {
		return facadeOneVertAngleZ;
	}

	/**
	 * @param facadeOneVertAngleZ the facadeOneVertAngleZ to set
	 */
	public void setFacadeOneVertAngleZ(int position,
			double facadeOneVertAngleZ) {
		this.facadeOneVertAngleZ[position][0] = facadeOneVertAngleZ;
	}

	/**
	 * @return the facadeTwoVertAngleX
	 */
	public double[][] getFacadeTwoVertAngleX() {
		return facadeTwoVertAngleX;
	}

	/**
	 * @param facadeTwoVertAngleX the facadeTwoVertAngleX to set
	 */
	public void setFacadeTwoVertAngleX(int position,
			double facadeTwoVertAngleX) {
		this.facadeTwoVertAngleX[position][0] = facadeTwoVertAngleX;
	}

	/**
	 * @return the facadeTwoVertAngleY
	 */
	public double[][] getFacadeTwoVertAngleY() {
		return facadeTwoVertAngleY;
	}

	/**
	 * @param facadeTwoVertAngleY the facadeTwoVertAngleY to set
	 */
	public void setFacadeTwoVertAngleY(int position,
			double facadeTwoVertAngleY) {
		this.facadeTwoVertAngleY[position][0] = facadeTwoVertAngleY;
	}

	/**
	 * @return the facadeTwoVertAngleZ
	 */
	public double[][] getFacadeTwoVertAngleZ() {
		return facadeTwoVertAngleZ;
	}

	/**
	 * @param facadeTwoVertAngleZ the facadeTwoVertAngleZ to set
	 */
	public void setFacadeTwoVertAngleZ(int position,
			double facadeTwoVertAngleZ) {
		this.facadeTwoVertAngleZ[position][0] = facadeTwoVertAngleZ;
	}

	/**
	 * @return the facadeThreeVertAngleX
	 */
	public double[][] getFacadeThreeVertAngleX() {
		return facadeThreeVertAngleX;
	}

	/**
	 * @param facadeThreeVertAngleX the facadeThreeVertAngleX to set
	 */
	public void setFacadeThreeVertAngleX(int position,
			double facadeThreeVertAngleX) {
		this.facadeThreeVertAngleX[position][0] = facadeThreeVertAngleX;
	}

	/**
	 * @return the facadeThreeVertAngleY
	 */
	public double[][] getFacadeThreeVertAngleY() {
		return facadeThreeVertAngleY;
	}

	/**
	 * @param facadeThreeVertAngleY the facadeThreeVertAngleY to set
	 */
	public void setFacadeThreeVertAngleY(int position,
			double facadeThreeVertAngleY) {
		this.facadeThreeVertAngleY[position][0] = facadeThreeVertAngleY;
	}

	/**
	 * @return the facadeThreeVertAngleZ
	 */
	public double[][] getFacadeThreeVertAngleZ() {
		return facadeThreeVertAngleZ;
	}

	/**
	 * @param facadeThreeVertAngleZ the facadeThreeVertAngleZ to set
	 */
	public void setFacadeThreeVertAngleZ(int position,
			double facadeThreeVertAngleZ) {
		this.facadeThreeVertAngleZ[position][0] = facadeThreeVertAngleZ;
	}

	/**
	 * @return the facadeFourVertAngleX
	 */
	public double[][] getFacadeFourVertAngleX() {
		return facadeFourVertAngleX;
	}

	/**
	 * @param facadeFourVertAngleX the facadeFourVertAngleX to set
	 */
	public void setFacadeFourVertAngleX(int position,
			double facadeFourVertAngleX) {
		this.facadeFourVertAngleX[position][0] = facadeFourVertAngleX;
	}

	/**
	 * @return the facadeFourVertAngleY
	 */
	public double[][] getFacadeFourVertAngleY() {
		return facadeFourVertAngleY;
	}

	/**
	 * @param facadeFourVertAngleY the facadeFourVertAngleY to set
	 */
	public void setFacadeFourVertAngleY(int position,
			double facadeFourVertAngleY) {
		this.facadeFourVertAngleY[position][0] = facadeFourVertAngleY;
	}

	/**
	 * @return the facadeFourVertAngleZ
	 */
	public double[][] getFacadeFourVertAngleZ() {
		return facadeFourVertAngleZ;
	}

	/**
	 * @param facadeFourVertAngleZ the facadeFourVertAngleZ to set
	 */
	public void setFacadeFourVertAngleZ(int position,
			double facadeFourVertAngleZ) {
		this.facadeFourVertAngleZ[position][0] = facadeFourVertAngleZ;
	}

	/**
	 * @return the facadeOneAverageDesignDaylightFactor
	 */
	public double[][] getFacadeOneAverageDesignDaylightFactor() {
		return facadeOneAverageDesignDaylightFactor;
	}

	/**
	 * @return the facadeOneAverageDesignDaylightFactor
	 */
	public double getFacadeOneAverageDesignDaylightFactor(int floor) {
		return functions.roundDecimal(facadeOneAverageDesignDaylightFactor[floor][0], dpFactor);
	}
	
	/**
	 * @param facadeOneAverageDesignDaylightFactor
	 *            the facadeOneAverageDesignDaylightFactor to set
	 */
	public void setFacadeOneAverageDesignDaylightFactor() {
		int floor = 0;
		this.facadeOneAverageDesignDaylightFactor[floor][0] = (facadeOneDiffuseTransmittanceValue
				* facadeOneTypicalFloorGlazedArea * facadeOneVertAngleZ[floor][0] * maintenanceFactorValue)
				/ (areaOfInternalSurfaces * (1 - (averageReflectanceOfInteriorSurfacesValue * averageReflectanceOfInteriorSurfacesValue)));
		//notifier.fireValueChange("facadeOneAverageDesignDaylightFactor");
	}

	/**
	 * @return the facadeTwoAverageDesignDaylightFactor
	 */
	public double[][] getFacadeTwoAverageDesignDaylightFactor() {
		return facadeTwoAverageDesignDaylightFactor;
	}

	/**
	 * @return the facadeTwoAverageDesignDaylightFactor
	 */
	public double getFacadeTwoAverageDesignDaylightFactor(int floor) {
		return functions.roundDecimal(facadeTwoAverageDesignDaylightFactor[floor][0], dpFactor);
	}
	
	/**
	 * @param facadeTwoAverageDesignDaylightFactor
	 *            the facadeTwoAverageDesignDaylightFactor to set
	 */
	public void setFacadeTwoAverageDesignDaylightFactor() {
		int floor = 0;
		this.facadeTwoAverageDesignDaylightFactor[floor][0] = (facadeTwoDiffuseTransmittanceValue
				* facadeTwoTypicalFloorGlazedArea * facadeTwoVertAngleZ[floor][0] * maintenanceFactorValue)
				/ (areaOfInternalSurfaces * (1 - (averageReflectanceOfInteriorSurfacesValue * averageReflectanceOfInteriorSurfacesValue)));
		//notifier.fireValueChange("facadeTwoAverageDesignDaylightFactor");
	}
	
	/**
	 * @return the facadeThreeAverageDesignDaylightFactor
	 */
	public double[][] getFacadeThreeAverageDesignDaylightFactor() {
		return facadeThreeAverageDesignDaylightFactor;
	}

	/**
	 * @return the facadeThreeAverageDesignDaylightFactor
	 */
	public double getFacadeThreeAverageDesignDaylightFactor(int floor) {
		return functions.roundDecimal(facadeThreeAverageDesignDaylightFactor[floor][0], dpFactor);
	}
	
	/**
	 * @param facadeThreeAverageDesignDaylightFactor
	 *            the facadeThreeAverageDesignDaylightFactor to set
	 */
	public void setFacadeThreeAverageDesignDaylightFactor() {
		int floor = 0;
		this.facadeThreeAverageDesignDaylightFactor[floor][0] = (facadeThreeDiffuseTransmittanceValue
				* facadeThreeTypicalFloorGlazedArea * facadeThreeVertAngleZ[floor][0] * maintenanceFactorValue)
				/ (areaOfInternalSurfaces * (1 - (averageReflectanceOfInteriorSurfacesValue * averageReflectanceOfInteriorSurfacesValue)));
		//notifier.fireValueChange("facadeThreeAverageDesignDaylightFactor");
	}
	
	/**
	 * @return the facadeFourAverageDesignDaylightFactor
	 */
	public double[][] getFacadeFourAverageDesignDaylightFactor() {
		return facadeFourAverageDesignDaylightFactor;
	}

	/**
	 * @return the facadeFourAverageDesignDaylightFactor
	 */
	public double getFacadeFourAverageDesignDaylightFactor(int floor) {
		return functions.roundDecimal(facadeFourAverageDesignDaylightFactor[floor][0], dpFactor);
	}
	
	/**
	 * @param facadeFourAverageDesignDaylightFactor
	 *            the facadeFourAverageDesignDaylightFactor to set
	 */
	public void setFacadeFourAverageDesignDaylightFactor() {
		int floor = 0;
		this.facadeFourAverageDesignDaylightFactor[floor][0] = (facadeFourDiffuseTransmittanceValue
				* facadeFourTypicalFloorGlazedArea * facadeFourVertAngleZ[floor][0] * maintenanceFactorValue)
				/ (areaOfInternalSurfaces * (1 - (averageReflectanceOfInteriorSurfacesValue * averageReflectanceOfInteriorSurfacesValue)));
		//notifier.fireValueChange("facadeFourAverageDesignDaylightFactor");
	}
	
	/**
	 * @return the extentOfPerimeterZone
	 */
	public double getExtentOfPerimeterZone() {
		return extentOfPerimeterZone;
	}

	/**
	 * @return the facadeOneGlazingType
	 */
	public String getFacadeOneGlazingType() {
		return facadeOneGlazingType;
	}

	/**
	 * @param facadeOneGlazingType the facadeOneGlazingType to set
	 */
	public void setFacadeOneGlazingType(String facadeOneGlazingType) {
		this.facadeOneGlazingType = facadeOneGlazingType;
		notifier.fireValueChange("facadeOneGlazingType");
		if (saveValues) {this.projectInstance.setFacadeGlazingType(0, this.facadeOneGlazingType);}
	}

	/**
	 * @return the facadeTwoGlazingType
	 */
	public String getFacadeTwoGlazingType() {
		return facadeTwoGlazingType;
	}

	/**
	 * @param facadeTwoGlazingType the facadeTwoGlazingType to set
	 */
	public void setFacadeTwoGlazingType(String facadeTwoGlazingType) {
		this.facadeTwoGlazingType = facadeTwoGlazingType;
		notifier.fireValueChange("facadeTwoGlazingType");
		if (saveValues) {this.projectInstance.setFacadeGlazingType(1, this.facadeTwoGlazingType);}
	}

	/**
	 * @return the facadeThreeGlazingType
	 */
	public String getFacadeThreeGlazingType() {
		return facadeThreeGlazingType;
	}

	/**
	 * @param facadeThreeGlazingType the facadeThreeGlazingType to set
	 */
	public void setFacadeThreeGlazingType(String facadeThreeGlazingType) {
		this.facadeThreeGlazingType = facadeThreeGlazingType;
		notifier.fireValueChange("facadeThreeGlazingType");
		if (saveValues) {this.projectInstance.setFacadeGlazingType(2, this.facadeThreeGlazingType);}
	}

	/**
	 * @return the facadeFourGlazingType
	 */
	public String getFacadeFourGlazingType() {
		return facadeFourGlazingType;
	}

	/**
	 * @param facadeFourGlazingType the facadeFourGlazingType to set
	 */
	public void setFacadeFourGlazingType(String facadeFourGlazingType) {
		this.facadeFourGlazingType = facadeFourGlazingType;
		notifier.fireValueChange("facadeFourGlazingType");
		if (saveValues) {this.projectInstance.setFacadeGlazingType(3, this.facadeFourGlazingType);}
	}

	/**
	 * @return the facadeOneGlazingSpec
	 */
	public String getFacadeOneGlazingSpec() {
		return facadeOneGlazingSpec;
	}

	/**
	 * @param facadeOneGlazingSpec the facadeOneGlazingSpec to set
	 */
	public void setFacadeOneGlazingSpec(String facadeOneGlazingSpec) {
		this.facadeOneGlazingSpec = facadeOneGlazingSpec;
		this.setFacadeOneWindowGlazing(facadeOneGlazingSpec);
		this.setFacadeOneDiffuseTransmittanceText(facadeOneGlazingSpec);
		notifier.fireValueChange("facadeOneGlazingSpec");
		if (saveValues) {this.projectInstance.setFacadeGlazingSpec(0, this.facadeOneGlazingSpec);}
	}

	/**
	 * @return the facadeTwoGlazingSpec
	 */
	public String getFacadeTwoGlazingSpec() {
		return facadeTwoGlazingSpec;
	}

	/**
	 * @param facadeTwoGlazingSpec the facadeTwoGlazingSpec to set
	 */
	public void setFacadeTwoGlazingSpec(String facadeTwoGlazingSpec) {
		this.facadeTwoGlazingSpec = facadeTwoGlazingSpec;
		this.setFacadeTwoWindowGlazing(facadeTwoGlazingSpec);
		this.setFacadeTwoDiffuseTransmittanceText(facadeTwoGlazingSpec);
		notifier.fireValueChange("facadeTwoGlazingSpec");
		if (saveValues) {this.projectInstance.setFacadeGlazingSpec(1, this.facadeTwoGlazingSpec);}
	}

	/**
	 * @return the facadeThreeGlazingSpec
	 */
	public String getFacadeThreeGlazingSpec() {
		return facadeThreeGlazingSpec;
	}

	/**
	 * @param facadeThreeGlazingSpec the facadeThreeGlazingSpec to set
	 */
	public void setFacadeThreeGlazingSpec(String facadeThreeGlazingSpec) {
		this.facadeThreeGlazingSpec = facadeThreeGlazingSpec;
		this.setFacadeThreeWindowGlazing(facadeThreeGlazingSpec);
		this.setFacadeThreeDiffuseTransmittanceText(facadeThreeGlazingSpec);
		notifier.fireValueChange("facadeThreeGlazingSpec");
		if (saveValues) {this.projectInstance.setFacadeGlazingSpec(2, this.facadeThreeGlazingSpec);}
	}

	/**
	 * @return the facadeFourGlazingSpec
	 */
	public String getFacadeFourGlazingSpec() {
		return facadeFourGlazingSpec;
	}

	/**
	 * @param facadeFourGlazingSpec the facadeFourGlazingSpec to set
	 */
	public void setFacadeFourGlazingSpec(String facadeFourGlazingSpec) {
		this.facadeFourGlazingSpec = facadeFourGlazingSpec;
		this.setFacadeFourWindowGlazing(facadeFourGlazingSpec);
		this.setFacadeFourDiffuseTransmittanceText(facadeFourGlazingSpec);
		notifier.fireValueChange("facadeFourGlazingSpec");
		if (saveValues) {this.projectInstance.setFacadeGlazingSpec(3, this.facadeFourGlazingSpec);}
	}
	
	/**
	 * @return the daylightingPerFacade
	 */
	public Panel getDaylightingPerFacade() {
		return daylightingPerFacade;
	}

	/**
	 * @param daylightingPerFacade the daylightingPerFacade to set
	 */
	public void setDaylightingPerFacade(Panel daylightingPerFacade) {
		this.daylightingPerFacade = daylightingPerFacade;
	}

	/**
	 * @return the floor0
	 */
	public String getFloor0() {
		return floor0;
	}

	/**
	 * @return the floor1
	 */
	public String getFloor1() {
		return floor1;
	}

	/**
	 * @return the floor2
	 */
	public String getFloor2() {
		return floor2;
	}

	/**
	 * @return the floor3
	 */
	public String getFloor3() {
		return floor3;
	}

	/**
	 * @return the floor4
	 */
	public String getFloor4() {
		return floor4;
	}

	/**
	 * @return the floor5
	 */
	public String getFloor5() {
		return floor5;
	}

	/**
	 * @return the floor6
	 */
	public String getFloor6() {
		return floor6;
	}

	/**
	 * @return the floor7
	 */
	public String getFloor7() {
		return floor7;
	}

	/**
	 * @return the floor8
	 */
	public String getFloor8() {
		return floor8;
	}

	/**
	 * @return the floor9
	 */
	public String getFloor9() {
		return floor9;
	}

	/**
	 * @return the floor10
	 */
	public String getFloor10() {
		return floor10;
	}

	/**
	 * @return the floor11
	 */
	public String getFloor11() {
		return floor11;
	}

	/**
	 * @return the floor12
	 */
	public String getFloor12() {
		return floor12;
	}

	/**
	 * @return the floor13
	 */
	public String getFloor13() {
		return floor13;
	}

	/**
	 * @return the floor14
	 */
	public String getFloor14() {
		return floor14;
	}

	/**
	 * @return the floor15
	 */
	public String getFloor15() {
		return floor15;
	}

	/**
	 * @return the projectRootLayout
	 */
	public AbsoluteLayout getProjectRootLayout() {
		return projectRootLayout;
	}

	/**
	 * @param projectRootLayout the projectRootLayout to set
	 */
	public void setProjectRootLayout(AbsoluteLayout projectRootLayout) {
		this.projectRootLayout = projectRootLayout;
	}
	
	public void updateProjectTabName() {
		this.projectRootLayout.setCaption(this.getProjName());
		notifier.fireValueChange("projectRootLayout");
	}

	/**
	 * @return the floor
	 */
	public String getFloor() {
		return floor;
	}

	/**
	 * @return the windowHH
	 */
	public String getWindowHH() {
		return windowHH;
	}

	/**
	 * @return the windowCH
	 */
	public String getWindowCH() {
		return windowCH;
	}

	/**
	 * @return the windowRV
	 */
	public String getWindowRV() {
		return WindowRV;
	}

//	/**
//	 * @return the runtimeProjectNum
//	 */
//	public int getRuntimeProjectNum() {
//		return runtimeProjectNum;
//	}
//
//	/**
//	 * @param runtimeProjectNum the runtimeProjectNum to set
//	 */
//	public void setRuntimeProjectNum(int runtimeProjectNum) {
//		this.runtimeProjectNum = runtimeProjectNum;
//		notifier.fireValueChange("runtimeProjectNum");
//	}

	/**
	 * @return the facadeOneSolarTransmittanceRO
	 */
	public double getFacadeOneSolarTransmittanceRO() {
		return functions.roundDecimal(facadeOneSolarTransmittanceRO, dpFactor);
	}

	/**
	 * @return the facadeTwoSolarTransmittanceRO
	 */
	public double getFacadeTwoSolarTransmittanceRO() {
		return functions.roundDecimal(facadeTwoSolarTransmittanceRO, dpFactor);
	}

	/**
	 * @return the facadeThreeSolarTransmittanceRO
	 */
	public double getFacadeThreeSolarTransmittanceRO() {
		return functions.roundDecimal(facadeThreeSolarTransmittanceRO, dpFactor);
	}

	/**
	 * @return the facadeFourSolarTransmittanceRO
	 */
	public double getFacadeFourSolarTransmittanceRO() {
		return functions.roundDecimal(facadeFourSolarTransmittanceRO, dpFactor);
	}

	/**
	 * @return the facadeOneShadingFactorRO
	 */
	public double getFacadeOneShadingFactorRO() {
		return functions.roundDecimal(facadeOneShadingFactorRO, dpFactor);
	}

	/**
	 * @return the facadeTwoShadingFactorRO
	 */
	public double getFacadeTwoShadingFactorRO() {
		return functions.roundDecimal(facadeTwoShadingFactorRO, dpFactor);
	}

	/**
	 * @return the facadeThreeShadingFactorRO
	 */
	public double getFacadeThreeShadingFactorRO() {
		return functions.roundDecimal(facadeThreeShadingFactorRO, dpFactor);
	}

	/**
	 * @return the facadeFourShadingFactorRO
	 */
	public double getFacadeFourShadingFactorRO() {
		return functions.roundDecimal(facadeFourShadingFactorRO, dpFactor);
	}

	// -- BEGIN AUTO GEN -- //


	/**
	 * @return the facadeOneWindowHH00
	 */
	public double getFacadeOneWindowHH00() {
		return facadeOneWindowHH00;
	}

	/**
	 * @param facadeOneWindowHH00 the facadeOneWindowHH00 to set
	 */
	public void setFacadeOneWindowHH00(double facadeOneWindowHH00) {
		this.facadeOneWindowHH00 = facadeOneWindowHH00;
		this.setFacadeOneWindowHH(00, facadeOneWindowHH00);
		notifier.fireValueChange("facadeOneWindowHH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 00, 0, facadeOneWindowHH00);}
	}

	/**
	 * @return the facadeOneWindowHH01
	 */
	public double getFacadeOneWindowHH01() {
		return facadeOneWindowHH01;
	}

	/**
	 * @param facadeOneWindowHH01 the facadeOneWindowHH01 to set
	 */
	public void setFacadeOneWindowHH01(double facadeOneWindowHH01) {
		this.facadeOneWindowHH01 = facadeOneWindowHH01;
		this.setFacadeOneWindowHH(01, facadeOneWindowHH01);
		notifier.fireValueChange("facadeOneWindowHH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 01, 0, facadeOneWindowHH01);}
	}

	/**
	 * @return the facadeOneWindowHH02
	 */
	public double getFacadeOneWindowHH02() {
		return facadeOneWindowHH02;
	}

	/**
	 * @param facadeOneWindowHH02 the facadeOneWindowHH02 to set
	 */
	public void setFacadeOneWindowHH02(double facadeOneWindowHH02) {
		this.facadeOneWindowHH02 = facadeOneWindowHH02;
		this.setFacadeOneWindowHH(02, facadeOneWindowHH02);
		notifier.fireValueChange("facadeOneWindowHH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 02, 0, facadeOneWindowHH02);}
	}

	/**
	 * @return the facadeOneWindowHH03
	 */
	public double getFacadeOneWindowHH03() {
		return facadeOneWindowHH03;
	}

	/**
	 * @param facadeOneWindowHH03 the facadeOneWindowHH03 to set
	 */
	public void setFacadeOneWindowHH03(double facadeOneWindowHH03) {
		this.facadeOneWindowHH03 = facadeOneWindowHH03;
		this.setFacadeOneWindowHH(03, facadeOneWindowHH03);
		notifier.fireValueChange("facadeOneWindowHH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 03, 0, facadeOneWindowHH03);}
	}

	/**
	 * @return the facadeOneWindowHH04
	 */
	public double getFacadeOneWindowHH04() {
		return facadeOneWindowHH04;
	}

	/**
	 * @param facadeOneWindowHH04 the facadeOneWindowHH04 to set
	 */
	public void setFacadeOneWindowHH04(double facadeOneWindowHH04) {
		this.facadeOneWindowHH04 = facadeOneWindowHH04;
		this.setFacadeOneWindowHH(04, facadeOneWindowHH04);
		notifier.fireValueChange("facadeOneWindowHH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 04, 0, facadeOneWindowHH04);}
	}

	/**
	 * @return the facadeOneWindowHH05
	 */
	public double getFacadeOneWindowHH05() {
		return facadeOneWindowHH05;
	}

	/**
	 * @param facadeOneWindowHH05 the facadeOneWindowHH05 to set
	 */
	public void setFacadeOneWindowHH05(double facadeOneWindowHH05) {
		this.facadeOneWindowHH05 = facadeOneWindowHH05;
		this.setFacadeOneWindowHH(05, facadeOneWindowHH05);
		notifier.fireValueChange("facadeOneWindowHH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 05, 0, facadeOneWindowHH05);}
	}

	/**
	 * @return the facadeOneWindowHH06
	 */
	public double getFacadeOneWindowHH06() {
		return facadeOneWindowHH06;
	}

	/**
	 * @param facadeOneWindowHH06 the facadeOneWindowHH06 to set
	 */
	public void setFacadeOneWindowHH06(double facadeOneWindowHH06) {
		this.facadeOneWindowHH06 = facadeOneWindowHH06;
		this.setFacadeOneWindowHH(06, facadeOneWindowHH06);
		notifier.fireValueChange("facadeOneWindowHH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 06, 0, facadeOneWindowHH06);}
	}

	/**
	 * @return the facadeOneWindowHH07
	 */
	public double getFacadeOneWindowHH07() {
		return facadeOneWindowHH07;
	}

	/**
	 * @param facadeOneWindowHH07 the facadeOneWindowHH07 to set
	 */
	public void setFacadeOneWindowHH07(double facadeOneWindowHH07) {
		this.facadeOneWindowHH07 = facadeOneWindowHH07;
		this.setFacadeOneWindowHH(07, facadeOneWindowHH07);
		notifier.fireValueChange("facadeOneWindowHH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 07, 0, facadeOneWindowHH07);}
	}

	/**
	 * @return the facadeOneWindowHH08
	 */
	public double getFacadeOneWindowHH08() {
		return facadeOneWindowHH08;
	}

	/**
	 * @param facadeOneWindowHH08 the facadeOneWindowHH08 to set
	 */
	public void setFacadeOneWindowHH08(double facadeOneWindowHH08) {
		this.facadeOneWindowHH08 = facadeOneWindowHH08;
		this.setFacadeOneWindowHH(8, facadeOneWindowHH08);
		notifier.fireValueChange("facadeOneWindowHH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 8, 0, facadeOneWindowHH08);}
	}

	/**
	 * @return the facadeOneWindowHH09
	 */
	public double getFacadeOneWindowHH09() {
		return facadeOneWindowHH09;
	}

	/**
	 * @param facadeOneWindowHH09 the facadeOneWindowHH09 to set
	 */
	public void setFacadeOneWindowHH09(double facadeOneWindowHH09) {
		this.facadeOneWindowHH09 = facadeOneWindowHH09;
		this.setFacadeOneWindowHH(9, facadeOneWindowHH09);
		notifier.fireValueChange("facadeOneWindowHH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 9, 0, facadeOneWindowHH09);}
	}

	/**
	 * @return the facadeOneWindowHH10
	 */
	public double getFacadeOneWindowHH10() {
		return facadeOneWindowHH10;
	}

	/**
	 * @param facadeOneWindowHH10 the facadeOneWindowHH10 to set
	 */
	public void setFacadeOneWindowHH10(double facadeOneWindowHH10) {
		this.facadeOneWindowHH10 = facadeOneWindowHH10;
		this.setFacadeOneWindowHH(10, facadeOneWindowHH10);
		notifier.fireValueChange("facadeOneWindowHH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 10, 0, facadeOneWindowHH10);}
	}

	/**
	 * @return the facadeOneWindowHH11
	 */
	public double getFacadeOneWindowHH11() {
		return facadeOneWindowHH11;
	}

	/**
	 * @param facadeOneWindowHH11 the facadeOneWindowHH11 to set
	 */
	public void setFacadeOneWindowHH11(double facadeOneWindowHH11) {
		this.facadeOneWindowHH11 = facadeOneWindowHH11;
		this.setFacadeOneWindowHH(11, facadeOneWindowHH11);
		notifier.fireValueChange("facadeOneWindowHH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 11, 0, facadeOneWindowHH11);}
	}

	/**
	 * @return the facadeOneWindowHH12
	 */
	public double getFacadeOneWindowHH12() {
		return facadeOneWindowHH12;
	}

	/**
	 * @param facadeOneWindowHH12 the facadeOneWindowHH12 to set
	 */
	public void setFacadeOneWindowHH12(double facadeOneWindowHH12) {
		this.facadeOneWindowHH12 = facadeOneWindowHH12;
		this.setFacadeOneWindowHH(12, facadeOneWindowHH12);
		notifier.fireValueChange("facadeOneWindowHH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 12, 0, facadeOneWindowHH12);}
	}

	/**
	 * @return the facadeOneWindowHH13
	 */
	public double getFacadeOneWindowHH13() {
		return facadeOneWindowHH13;
	}

	/**
	 * @param facadeOneWindowHH13 the facadeOneWindowHH13 to set
	 */
	public void setFacadeOneWindowHH13(double facadeOneWindowHH13) {
		this.facadeOneWindowHH13 = facadeOneWindowHH13;
		this.setFacadeOneWindowHH(13, facadeOneWindowHH13);
		notifier.fireValueChange("facadeOneWindowHH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 13, 0, facadeOneWindowHH13);}
	}

	/**
	 * @return the facadeOneWindowHH14
	 */
	public double getFacadeOneWindowHH14() {
		return facadeOneWindowHH14;
	}

	/**
	 * @param facadeOneWindowHH14 the facadeOneWindowHH14 to set
	 */
	public void setFacadeOneWindowHH14(double facadeOneWindowHH14) {
		this.facadeOneWindowHH14 = facadeOneWindowHH14;
		this.setFacadeOneWindowHH(14, facadeOneWindowHH14);
		notifier.fireValueChange("facadeOneWindowHH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 14, 0, facadeOneWindowHH14);}
	}

	/**
	 * @return the facadeOneWindowHH15
	 */
	public double getFacadeOneWindowHH15() {
		return facadeOneWindowHH15;
	}

	/**
	 * @param facadeOneWindowHH15 the facadeOneWindowHH15 to set
	 */
	public void setFacadeOneWindowHH15(double facadeOneWindowHH15) {
		this.facadeOneWindowHH15 = facadeOneWindowHH15;
		this.setFacadeOneWindowHH(15, facadeOneWindowHH15);
		notifier.fireValueChange("facadeOneWindowHH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 15, 0, facadeOneWindowHH15);}
	}

	/**
	 * @return the facadeTwoWindowHH00
	 */
	public double getFacadeTwoWindowHH00() {
		return facadeTwoWindowHH00;
	}

	/**
	 * @param facadeTwoWindowHH00 the facadeTwoWindowHH00 to set
	 */
	public void setFacadeTwoWindowHH00(double facadeTwoWindowHH00) {
		this.facadeTwoWindowHH00 = facadeTwoWindowHH00;
		this.setFacadeTwoWindowHH(00, facadeTwoWindowHH00);
		notifier.fireValueChange("facadeTwoWindowHH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 00, 0, facadeTwoWindowHH00);}
	}

	/**
	 * @return the facadeTwoWindowHH01
	 */
	public double getFacadeTwoWindowHH01() {
		return facadeTwoWindowHH01;
	}

	/**
	 * @param facadeTwoWindowHH01 the facadeTwoWindowHH01 to set
	 */
	public void setFacadeTwoWindowHH01(double facadeTwoWindowHH01) {
		this.facadeTwoWindowHH01 = facadeTwoWindowHH01;
		this.setFacadeTwoWindowHH(01, facadeTwoWindowHH01);
		notifier.fireValueChange("facadeTwoWindowHH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 01, 0, facadeTwoWindowHH01);}
	}

	/**
	 * @return the facadeTwoWindowHH02
	 */
	public double getFacadeTwoWindowHH02() {
		return facadeTwoWindowHH02;
	}

	/**
	 * @param facadeTwoWindowHH02 the facadeTwoWindowHH02 to set
	 */
	public void setFacadeTwoWindowHH02(double facadeTwoWindowHH02) {
		this.facadeTwoWindowHH02 = facadeTwoWindowHH02;
		this.setFacadeTwoWindowHH(02, facadeTwoWindowHH02);
		notifier.fireValueChange("facadeTwoWindowHH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 02, 0, facadeTwoWindowHH02);}
	}

	/**
	 * @return the facadeTwoWindowHH03
	 */
	public double getFacadeTwoWindowHH03() {
		return facadeTwoWindowHH03;
	}

	/**
	 * @param facadeTwoWindowHH03 the facadeTwoWindowHH03 to set
	 */
	public void setFacadeTwoWindowHH03(double facadeTwoWindowHH03) {
		this.facadeTwoWindowHH03 = facadeTwoWindowHH03;
		this.setFacadeTwoWindowHH(03, facadeTwoWindowHH03);
		notifier.fireValueChange("facadeTwoWindowHH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 03, 0, facadeTwoWindowHH03);}
	}

	/**
	 * @return the facadeTwoWindowHH04
	 */
	public double getFacadeTwoWindowHH04() {
		return facadeTwoWindowHH04;
	}

	/**
	 * @param facadeTwoWindowHH04 the facadeTwoWindowHH04 to set
	 */
	public void setFacadeTwoWindowHH04(double facadeTwoWindowHH04) {
		this.facadeTwoWindowHH04 = facadeTwoWindowHH04;
		this.setFacadeTwoWindowHH(04, facadeTwoWindowHH04);
		notifier.fireValueChange("facadeTwoWindowHH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 04, 0, facadeTwoWindowHH04);}
	}

	/**
	 * @return the facadeTwoWindowHH05
	 */
	public double getFacadeTwoWindowHH05() {
		return facadeTwoWindowHH05;
	}

	/**
	 * @param facadeTwoWindowHH05 the facadeTwoWindowHH05 to set
	 */
	public void setFacadeTwoWindowHH05(double facadeTwoWindowHH05) {
		this.facadeTwoWindowHH05 = facadeTwoWindowHH05;
		this.setFacadeTwoWindowHH(05, facadeTwoWindowHH05);
		notifier.fireValueChange("facadeTwoWindowHH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 05, 0, facadeTwoWindowHH05);}
	}

	/**
	 * @return the facadeTwoWindowHH06
	 */
	public double getFacadeTwoWindowHH06() {
		return facadeTwoWindowHH06;
	}

	/**
	 * @param facadeTwoWindowHH06 the facadeTwoWindowHH06 to set
	 */
	public void setFacadeTwoWindowHH06(double facadeTwoWindowHH06) {
		this.facadeTwoWindowHH06 = facadeTwoWindowHH06;
		this.setFacadeTwoWindowHH(06, facadeTwoWindowHH06);
		notifier.fireValueChange("facadeTwoWindowHH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 06, 0, facadeTwoWindowHH06);}
	}

	/**
	 * @return the facadeTwoWindowHH07
	 */
	public double getFacadeTwoWindowHH07() {
		return facadeTwoWindowHH07;
	}

	/**
	 * @param facadeTwoWindowHH07 the facadeTwoWindowHH07 to set
	 */
	public void setFacadeTwoWindowHH07(double facadeTwoWindowHH07) {
		this.facadeTwoWindowHH07 = facadeTwoWindowHH07;
		this.setFacadeTwoWindowHH(07, facadeTwoWindowHH07);
		notifier.fireValueChange("facadeTwoWindowHH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 07, 0, facadeTwoWindowHH07);}
	}

	/**
	 * @return the facadeTwoWindowHH08
	 */
	public double getFacadeTwoWindowHH08() {
		return facadeTwoWindowHH08;
	}

	/**
	 * @param facadeTwoWindowHH08 the facadeTwoWindowHH08 to set
	 */
	public void setFacadeTwoWindowHH08(double facadeTwoWindowHH08) {
		this.facadeTwoWindowHH08 = facadeTwoWindowHH08;
		this.setFacadeTwoWindowHH(8, facadeTwoWindowHH08);
		notifier.fireValueChange("facadeTwoWindowHH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 8, 0, facadeTwoWindowHH08);}
	}

	/**
	 * @return the facadeTwoWindowHH09
	 */
	public double getFacadeTwoWindowHH09() {
		return facadeTwoWindowHH09;
	}

	/**
	 * @param facadeTwoWindowHH09 the facadeTwoWindowHH09 to set
	 */
	public void setFacadeTwoWindowHH09(double facadeTwoWindowHH09) {
		this.facadeTwoWindowHH09 = facadeTwoWindowHH09;
		this.setFacadeTwoWindowHH(9, facadeTwoWindowHH09);
		notifier.fireValueChange("facadeTwoWindowHH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 9, 0, facadeTwoWindowHH09);}
	}

	/**
	 * @return the facadeTwoWindowHH10
	 */
	public double getFacadeTwoWindowHH10() {
		return facadeTwoWindowHH10;
	}

	/**
	 * @param facadeTwoWindowHH10 the facadeTwoWindowHH10 to set
	 */
	public void setFacadeTwoWindowHH10(double facadeTwoWindowHH10) {
		this.facadeTwoWindowHH10 = facadeTwoWindowHH10;
		this.setFacadeTwoWindowHH(10, facadeTwoWindowHH10);
		notifier.fireValueChange("facadeTwoWindowHH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 10, 0, facadeTwoWindowHH10);}
	}

	/**
	 * @return the facadeTwoWindowHH11
	 */
	public double getFacadeTwoWindowHH11() {
		return facadeTwoWindowHH11;
	}

	/**
	 * @param facadeTwoWindowHH11 the facadeTwoWindowHH11 to set
	 */
	public void setFacadeTwoWindowHH11(double facadeTwoWindowHH11) {
		this.facadeTwoWindowHH11 = facadeTwoWindowHH11;
		this.setFacadeTwoWindowHH(11, facadeTwoWindowHH11);
		notifier.fireValueChange("facadeTwoWindowHH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 11, 0, facadeTwoWindowHH11);}
	}

	/**
	 * @return the facadeTwoWindowHH12
	 */
	public double getFacadeTwoWindowHH12() {
		return facadeTwoWindowHH12;
	}

	/**
	 * @param facadeTwoWindowHH12 the facadeTwoWindowHH12 to set
	 */
	public void setFacadeTwoWindowHH12(double facadeTwoWindowHH12) {
		this.facadeTwoWindowHH12 = facadeTwoWindowHH12;
		this.setFacadeTwoWindowHH(12, facadeTwoWindowHH12);
		notifier.fireValueChange("facadeTwoWindowHH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 12, 0, facadeTwoWindowHH12);}
	}

	/**
	 * @return the facadeTwoWindowHH13
	 */
	public double getFacadeTwoWindowHH13() {
		return facadeTwoWindowHH13;
	}

	/**
	 * @param facadeTwoWindowHH13 the facadeTwoWindowHH13 to set
	 */
	public void setFacadeTwoWindowHH13(double facadeTwoWindowHH13) {
		this.facadeTwoWindowHH13 = facadeTwoWindowHH13;
		this.setFacadeTwoWindowHH(13, facadeTwoWindowHH13);
		notifier.fireValueChange("facadeTwoWindowHH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 13, 0, facadeTwoWindowHH13);}
	}

	/**
	 * @return the facadeTwoWindowHH14
	 */
	public double getFacadeTwoWindowHH14() {
		return facadeTwoWindowHH14;
	}

	/**
	 * @param facadeTwoWindowHH14 the facadeTwoWindowHH14 to set
	 */
	public void setFacadeTwoWindowHH14(double facadeTwoWindowHH14) {
		this.facadeTwoWindowHH14 = facadeTwoWindowHH14;
		this.setFacadeTwoWindowHH(14, facadeTwoWindowHH14);
		notifier.fireValueChange("facadeTwoWindowHH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 14, 0, facadeTwoWindowHH14);}
	}

	/**
	 * @return the facadeTwoWindowHH15
	 */
	public double getFacadeTwoWindowHH15() {
		return facadeTwoWindowHH15;
	}

	/**
	 * @param facadeTwoWindowHH15 the facadeTwoWindowHH15 to set
	 */
	public void setFacadeTwoWindowHH15(double facadeTwoWindowHH15) {
		this.facadeTwoWindowHH15 = facadeTwoWindowHH15;
		this.setFacadeTwoWindowHH(15, facadeTwoWindowHH15);
		notifier.fireValueChange("facadeTwoWindowHH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 15, 0, facadeTwoWindowHH15);}
	}

	/**
	 * @return the facadeThreeWindowHH00
	 */
	public double getFacadeThreeWindowHH00() {
		return facadeThreeWindowHH00;
	}

	/**
	 * @param facadeThreeWindowHH00 the facadeThreeWindowHH00 to set
	 */
	public void setFacadeThreeWindowHH00(double facadeThreeWindowHH00) {
		this.facadeThreeWindowHH00 = facadeThreeWindowHH00;
		this.setFacadeThreeWindowHH(00, facadeThreeWindowHH00);
		notifier.fireValueChange("facadeThreeWindowHH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 00, 0, facadeThreeWindowHH00);}
	}

	/**
	 * @return the facadeThreeWindowHH01
	 */
	public double getFacadeThreeWindowHH01() {
		return facadeThreeWindowHH01;
	}

	/**
	 * @param facadeThreeWindowHH01 the facadeThreeWindowHH01 to set
	 */
	public void setFacadeThreeWindowHH01(double facadeThreeWindowHH01) {
		this.facadeThreeWindowHH01 = facadeThreeWindowHH01;
		this.setFacadeThreeWindowHH(01, facadeThreeWindowHH01);
		notifier.fireValueChange("facadeThreeWindowHH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 01, 0, facadeThreeWindowHH01);}
	}

	/**
	 * @return the facadeThreeWindowHH02
	 */
	public double getFacadeThreeWindowHH02() {
		return facadeThreeWindowHH02;
	}

	/**
	 * @param facadeThreeWindowHH02 the facadeThreeWindowHH02 to set
	 */
	public void setFacadeThreeWindowHH02(double facadeThreeWindowHH02) {
		this.facadeThreeWindowHH02 = facadeThreeWindowHH02;
		this.setFacadeThreeWindowHH(02, facadeThreeWindowHH02);
		notifier.fireValueChange("facadeThreeWindowHH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 02, 0, facadeThreeWindowHH02);}
	}

	/**
	 * @return the facadeThreeWindowHH03
	 */
	public double getFacadeThreeWindowHH03() {
		return facadeThreeWindowHH03;
	}

	/**
	 * @param facadeThreeWindowHH03 the facadeThreeWindowHH03 to set
	 */
	public void setFacadeThreeWindowHH03(double facadeThreeWindowHH03) {
		this.facadeThreeWindowHH03 = facadeThreeWindowHH03;
		this.setFacadeThreeWindowHH(03, facadeThreeWindowHH03);
		notifier.fireValueChange("facadeThreeWindowHH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 03, 0, facadeThreeWindowHH03);}
	}

	/**
	 * @return the facadeThreeWindowHH04
	 */
	public double getFacadeThreeWindowHH04() {
		return facadeThreeWindowHH04;
	}

	/**
	 * @param facadeThreeWindowHH04 the facadeThreeWindowHH04 to set
	 */
	public void setFacadeThreeWindowHH04(double facadeThreeWindowHH04) {
		this.facadeThreeWindowHH04 = facadeThreeWindowHH04;
		this.setFacadeThreeWindowHH(04, facadeThreeWindowHH04);
		notifier.fireValueChange("facadeThreeWindowHH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 04, 0, facadeThreeWindowHH04);}
	}

	/**
	 * @return the facadeThreeWindowHH05
	 */
	public double getFacadeThreeWindowHH05() {
		return facadeThreeWindowHH05;
	}

	/**
	 * @param facadeThreeWindowHH05 the facadeThreeWindowHH05 to set
	 */
	public void setFacadeThreeWindowHH05(double facadeThreeWindowHH05) {
		this.facadeThreeWindowHH05 = facadeThreeWindowHH05;
		this.setFacadeThreeWindowHH(05, facadeThreeWindowHH05);
		notifier.fireValueChange("facadeThreeWindowHH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 05, 0, facadeThreeWindowHH05);}
	}

	/**
	 * @return the facadeThreeWindowHH06
	 */
	public double getFacadeThreeWindowHH06() {
		return facadeThreeWindowHH06;
	}

	/**
	 * @param facadeThreeWindowHH06 the facadeThreeWindowHH06 to set
	 */
	public void setFacadeThreeWindowHH06(double facadeThreeWindowHH06) {
		this.facadeThreeWindowHH06 = facadeThreeWindowHH06;
		this.setFacadeThreeWindowHH(06, facadeThreeWindowHH06);
		notifier.fireValueChange("facadeThreeWindowHH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 06, 0, facadeThreeWindowHH06);}
	}

	/**
	 * @return the facadeThreeWindowHH07
	 */
	public double getFacadeThreeWindowHH07() {
		return facadeThreeWindowHH07;
	}

	/**
	 * @param facadeThreeWindowHH07 the facadeThreeWindowHH07 to set
	 */
	public void setFacadeThreeWindowHH07(double facadeThreeWindowHH07) {
		this.facadeThreeWindowHH07 = facadeThreeWindowHH07;
		this.setFacadeThreeWindowHH(07, facadeThreeWindowHH07);
		notifier.fireValueChange("facadeThreeWindowHH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 07, 0, facadeThreeWindowHH07);}
	}

	/**
	 * @return the facadeThreeWindowHH08
	 */
	public double getFacadeThreeWindowHH08() {
		return facadeThreeWindowHH08;
	}

	/**
	 * @param facadeThreeWindowHH08 the facadeThreeWindowHH08 to set
	 */
	public void setFacadeThreeWindowHH08(double facadeThreeWindowHH08) {
		this.facadeThreeWindowHH08 = facadeThreeWindowHH08;
		this.setFacadeThreeWindowHH(8, facadeThreeWindowHH08);
		notifier.fireValueChange("facadeThreeWindowHH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 8, 0, facadeThreeWindowHH08);}
	}

	/**
	 * @return the facadeThreeWindowHH09
	 */
	public double getFacadeThreeWindowHH09() {
		return facadeThreeWindowHH09;
	}

	/**
	 * @param facadeThreeWindowHH09 the facadeThreeWindowHH09 to set
	 */
	public void setFacadeThreeWindowHH09(double facadeThreeWindowHH09) {
		this.facadeThreeWindowHH09 = facadeThreeWindowHH09;
		this.setFacadeThreeWindowHH(9, facadeThreeWindowHH09);
		notifier.fireValueChange("facadeThreeWindowHH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 9, 0, facadeThreeWindowHH09);}
	}

	/**
	 * @return the facadeThreeWindowHH10
	 */
	public double getFacadeThreeWindowHH10() {
		return facadeThreeWindowHH10;
	}

	/**
	 * @param facadeThreeWindowHH10 the facadeThreeWindowHH10 to set
	 */
	public void setFacadeThreeWindowHH10(double facadeThreeWindowHH10) {
		this.facadeThreeWindowHH10 = facadeThreeWindowHH10;
		this.setFacadeThreeWindowHH(10, facadeThreeWindowHH10);
		notifier.fireValueChange("facadeThreeWindowHH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 10, 0, facadeThreeWindowHH10);}
	}

	/**
	 * @return the facadeThreeWindowHH11
	 */
	public double getFacadeThreeWindowHH11() {
		return facadeThreeWindowHH11;
	}

	/**
	 * @param facadeThreeWindowHH11 the facadeThreeWindowHH11 to set
	 */
	public void setFacadeThreeWindowHH11(double facadeThreeWindowHH11) {
		this.facadeThreeWindowHH11 = facadeThreeWindowHH11;
		this.setFacadeThreeWindowHH(11, facadeThreeWindowHH11);
		notifier.fireValueChange("facadeThreeWindowHH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 11, 0, facadeThreeWindowHH11);}
	}

	/**
	 * @return the facadeThreeWindowHH12
	 */
	public double getFacadeThreeWindowHH12() {
		return facadeThreeWindowHH12;
	}

	/**
	 * @param facadeThreeWindowHH12 the facadeThreeWindowHH12 to set
	 */
	public void setFacadeThreeWindowHH12(double facadeThreeWindowHH12) {
		this.facadeThreeWindowHH12 = facadeThreeWindowHH12;
		this.setFacadeThreeWindowHH(12, facadeThreeWindowHH12);
		notifier.fireValueChange("facadeThreeWindowHH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 12, 0, facadeThreeWindowHH12);}
	}

	/**
	 * @return the facadeThreeWindowHH13
	 */
	public double getFacadeThreeWindowHH13() {
		return facadeThreeWindowHH13;
	}

	/**
	 * @param facadeThreeWindowHH13 the facadeThreeWindowHH13 to set
	 */
	public void setFacadeThreeWindowHH13(double facadeThreeWindowHH13) {
		this.facadeThreeWindowHH13 = facadeThreeWindowHH13;
		this.setFacadeThreeWindowHH(13, facadeThreeWindowHH13);
		notifier.fireValueChange("facadeThreeWindowHH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 13, 0, facadeThreeWindowHH13);}
	}

	/**
	 * @return the facadeThreeWindowHH14
	 */
	public double getFacadeThreeWindowHH14() {
		return facadeThreeWindowHH14;
	}

	/**
	 * @param facadeThreeWindowHH14 the facadeThreeWindowHH14 to set
	 */
	public void setFacadeThreeWindowHH14(double facadeThreeWindowHH14) {
		this.facadeThreeWindowHH14 = facadeThreeWindowHH14;
		this.setFacadeThreeWindowHH(14, facadeThreeWindowHH14);
		notifier.fireValueChange("facadeThreeWindowHH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 14, 0, facadeThreeWindowHH14);}
	}

	/**
	 * @return the facadeThreeWindowHH15
	 */
	public double getFacadeThreeWindowHH15() {
		return facadeThreeWindowHH15;
	}

	/**
	 * @param facadeThreeWindowHH15 the facadeThreeWindowHH15 to set
	 */
	public void setFacadeThreeWindowHH15(double facadeThreeWindowHH15) {
		this.facadeThreeWindowHH15 = facadeThreeWindowHH15;
		this.setFacadeThreeWindowHH(15, facadeThreeWindowHH15);
		notifier.fireValueChange("facadeThreeWindowHH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 15, 0, facadeThreeWindowHH15);}
	}

	/**
	 * @return the facadeFourWindowHH00
	 */
	public double getFacadeFourWindowHH00() {
		return facadeFourWindowHH00;
	}

	/**
	 * @param facadeFourWindowHH00 the facadeFourWindowHH00 to set
	 */
	public void setFacadeFourWindowHH00(double facadeFourWindowHH00) {
		this.facadeFourWindowHH00 = facadeFourWindowHH00;
		this.setFacadeFourWindowHH(00, facadeFourWindowHH00);
		notifier.fireValueChange("facadeFourWindowHH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 00, 0, facadeFourWindowHH00);}
	}

	/**
	 * @return the facadeFourWindowHH01
	 */
	public double getFacadeFourWindowHH01() {
		return facadeFourWindowHH01;
	}

	/**
	 * @param facadeFourWindowHH01 the facadeFourWindowHH01 to set
	 */
	public void setFacadeFourWindowHH01(double facadeFourWindowHH01) {
		this.facadeFourWindowHH01 = facadeFourWindowHH01;
		this.setFacadeFourWindowHH(01, facadeFourWindowHH01);
		notifier.fireValueChange("facadeFourWindowHH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 01, 0, facadeFourWindowHH01);}
	}

	/**
	 * @return the facadeFourWindowHH02
	 */
	public double getFacadeFourWindowHH02() {
		return facadeFourWindowHH02;
	}

	/**
	 * @param facadeFourWindowHH02 the facadeFourWindowHH02 to set
	 */
	public void setFacadeFourWindowHH02(double facadeFourWindowHH02) {
		this.facadeFourWindowHH02 = facadeFourWindowHH02;
		this.setFacadeFourWindowHH(02, facadeFourWindowHH02);
		notifier.fireValueChange("facadeFourWindowHH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 02, 0, facadeFourWindowHH02);}
	}

	/**
	 * @return the facadeFourWindowHH03
	 */
	public double getFacadeFourWindowHH03() {
		return facadeFourWindowHH03;
	}

	/**
	 * @param facadeFourWindowHH03 the facadeFourWindowHH03 to set
	 */
	public void setFacadeFourWindowHH03(double facadeFourWindowHH03) {
		this.facadeFourWindowHH03 = facadeFourWindowHH03;
		this.setFacadeFourWindowHH(03, facadeFourWindowHH03);
		notifier.fireValueChange("facadeFourWindowHH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 03, 0, facadeFourWindowHH03);}
	}

	/**
	 * @return the facadeFourWindowHH04
	 */
	public double getFacadeFourWindowHH04() {
		return facadeFourWindowHH04;
	}

	/**
	 * @param facadeFourWindowHH04 the facadeFourWindowHH04 to set
	 */
	public void setFacadeFourWindowHH04(double facadeFourWindowHH04) {
		this.facadeFourWindowHH04 = facadeFourWindowHH04;
		this.setFacadeFourWindowHH(04, facadeFourWindowHH04);
		notifier.fireValueChange("facadeFourWindowHH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 04, 0, facadeFourWindowHH04);}
	}

	/**
	 * @return the facadeFourWindowHH05
	 */
	public double getFacadeFourWindowHH05() {
		return facadeFourWindowHH05;
	}

	/**
	 * @param facadeFourWindowHH05 the facadeFourWindowHH05 to set
	 */
	public void setFacadeFourWindowHH05(double facadeFourWindowHH05) {
		this.facadeFourWindowHH05 = facadeFourWindowHH05;
		this.setFacadeFourWindowHH(05, facadeFourWindowHH05);
		notifier.fireValueChange("facadeFourWindowHH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 05, 0, facadeFourWindowHH05);}
	}

	/**
	 * @return the facadeFourWindowHH06
	 */
	public double getFacadeFourWindowHH06() {
		return facadeFourWindowHH06;
	}

	/**
	 * @param facadeFourWindowHH06 the facadeFourWindowHH06 to set
	 */
	public void setFacadeFourWindowHH06(double facadeFourWindowHH06) {
		this.facadeFourWindowHH06 = facadeFourWindowHH06;
		this.setFacadeFourWindowHH(06, facadeFourWindowHH06);
		notifier.fireValueChange("facadeFourWindowHH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 06, 0, facadeFourWindowHH06);}
	}

	/**
	 * @return the facadeFourWindowHH07
	 */
	public double getFacadeFourWindowHH07() {
		return facadeFourWindowHH07;
	}

	/**
	 * @param facadeFourWindowHH07 the facadeFourWindowHH07 to set
	 */
	public void setFacadeFourWindowHH07(double facadeFourWindowHH07) {
		this.facadeFourWindowHH07 = facadeFourWindowHH07;
		this.setFacadeFourWindowHH(07, facadeFourWindowHH07);
		notifier.fireValueChange("facadeFourWindowHH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 07, 0, facadeFourWindowHH07);}
	}

	/**
	 * @return the facadeFourWindowHH08
	 */
	public double getFacadeFourWindowHH08() {
		return facadeFourWindowHH08;
	}

	/**
	 * @param facadeFourWindowHH08 the facadeFourWindowHH08 to set
	 */
	public void setFacadeFourWindowHH08(double facadeFourWindowHH08) {
		this.facadeFourWindowHH08 = facadeFourWindowHH08;
		this.setFacadeFourWindowHH(8, facadeFourWindowHH08);
		notifier.fireValueChange("facadeFourWindowHH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 8, 0, facadeFourWindowHH08);}
	}

	/**
	 * @return the facadeFourWindowHH09
	 */
	public double getFacadeFourWindowHH09() {
		return facadeFourWindowHH09;
	}

	/**
	 * @param facadeFourWindowHH09 the facadeFourWindowHH09 to set
	 */
	public void setFacadeFourWindowHH09(double facadeFourWindowHH09) {
		this.facadeFourWindowHH09 = facadeFourWindowHH09;
		this.setFacadeFourWindowHH(9, facadeFourWindowHH09);
		notifier.fireValueChange("facadeFourWindowHH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 9, 0, facadeFourWindowHH09);}
	}

	/**
	 * @return the facadeFourWindowHH10
	 */
	public double getFacadeFourWindowHH10() {
		return facadeFourWindowHH10;
	}

	/**
	 * @param facadeFourWindowHH10 the facadeFourWindowHH10 to set
	 */
	public void setFacadeFourWindowHH10(double facadeFourWindowHH10) {
		this.facadeFourWindowHH10 = facadeFourWindowHH10;
		this.setFacadeFourWindowHH(10, facadeFourWindowHH10);
		notifier.fireValueChange("facadeFourWindowHH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 10, 0, facadeFourWindowHH10);}
	}

	/**
	 * @return the facadeFourWindowHH11
	 */
	public double getFacadeFourWindowHH11() {
		return facadeFourWindowHH11;
	}

	/**
	 * @param facadeFourWindowHH11 the facadeFourWindowHH11 to set
	 */
	public void setFacadeFourWindowHH11(double facadeFourWindowHH11) {
		this.facadeFourWindowHH11 = facadeFourWindowHH11;
		this.setFacadeFourWindowHH(11, facadeFourWindowHH11);
		notifier.fireValueChange("facadeFourWindowHH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 11, 0, facadeFourWindowHH11);}
	}

	/**
	 * @return the facadeFourWindowHH12
	 */
	public double getFacadeFourWindowHH12() {
		return facadeFourWindowHH12;
	}

	/**
	 * @param facadeFourWindowHH12 the facadeFourWindowHH12 to set
	 */
	public void setFacadeFourWindowHH12(double facadeFourWindowHH12) {
		this.facadeFourWindowHH12 = facadeFourWindowHH12;
		this.setFacadeFourWindowHH(12, facadeFourWindowHH12);
		notifier.fireValueChange("facadeFourWindowHH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 12, 0, facadeFourWindowHH12);}
	}

	/**
	 * @return the facadeFourWindowHH13
	 */
	public double getFacadeFourWindowHH13() {
		return facadeFourWindowHH13;
	}

	/**
	 * @param facadeFourWindowHH13 the facadeFourWindowHH13 to set
	 */
	public void setFacadeFourWindowHH13(double facadeFourWindowHH13) {
		this.facadeFourWindowHH13 = facadeFourWindowHH13;
		this.setFacadeFourWindowHH(13, facadeFourWindowHH13);
		notifier.fireValueChange("facadeFourWindowHH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 13, 0, facadeFourWindowHH13);}
	}

	/**
	 * @return the facadeFourWindowHH14
	 */
	public double getFacadeFourWindowHH14() {
		return facadeFourWindowHH14;
	}

	/**
	 * @param facadeFourWindowHH14 the facadeFourWindowHH14 to set
	 */
	public void setFacadeFourWindowHH14(double facadeFourWindowHH14) {
		this.facadeFourWindowHH14 = facadeFourWindowHH14;
		this.setFacadeFourWindowHH(14, facadeFourWindowHH14);
		notifier.fireValueChange("facadeFourWindowHH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 14, 0, facadeFourWindowHH14);}
	}

	/**
	 * @return the facadeFourWindowHH15
	 */
	public double getFacadeFourWindowHH15() {
		return facadeFourWindowHH15;
	}

	/**
	 * @param facadeFourWindowHH15 the facadeFourWindowHH15 to set
	 */
	public void setFacadeFourWindowHH15(double facadeFourWindowHH15) {
		this.facadeFourWindowHH15 = facadeFourWindowHH15;
		this.setFacadeFourWindowHH(15, facadeFourWindowHH15);
		notifier.fireValueChange("facadeFourWindowHH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 15, 0, facadeFourWindowHH15);}
	}

	/**
	 * @return the facadeOneWindowCH00
	 */
	public double getFacadeOneWindowCH00() {
		return facadeOneWindowCH00;
	}

	/**
	 * @param facadeOneWindowCH00 the facadeOneWindowCH00 to set
	 */
	public void setFacadeOneWindowCH00(double facadeOneWindowCH00) {
		this.facadeOneWindowCH00 = facadeOneWindowCH00;
		this.setFacadeOneWindowCH(00, facadeOneWindowCH00);
		notifier.fireValueChange("facadeOneWindowCH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 00, 1, facadeOneWindowCH00);}
	}

	/**
	 * @return the facadeOneWindowCH01
	 */
	public double getFacadeOneWindowCH01() {
		return facadeOneWindowCH01;
	}

	/**
	 * @param facadeOneWindowCH01 the facadeOneWindowCH01 to set
	 */
	public void setFacadeOneWindowCH01(double facadeOneWindowCH01) {
		this.facadeOneWindowCH01 = facadeOneWindowCH01;
		this.setFacadeOneWindowCH(01, facadeOneWindowCH01);
		notifier.fireValueChange("facadeOneWindowCH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 01, 1, facadeOneWindowCH01);}
	}

	/**
	 * @return the facadeOneWindowCH02
	 */
	public double getFacadeOneWindowCH02() {
		return facadeOneWindowCH02;
	}

	/**
	 * @param facadeOneWindowCH02 the facadeOneWindowCH02 to set
	 */
	public void setFacadeOneWindowCH02(double facadeOneWindowCH02) {
		this.facadeOneWindowCH02 = facadeOneWindowCH02;
		this.setFacadeOneWindowCH(02, facadeOneWindowCH02);
		notifier.fireValueChange("facadeOneWindowCH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 02, 1, facadeOneWindowCH02);}
	}

	/**
	 * @return the facadeOneWindowCH03
	 */
	public double getFacadeOneWindowCH03() {
		return facadeOneWindowCH03;
	}

	/**
	 * @param facadeOneWindowCH03 the facadeOneWindowCH03 to set
	 */
	public void setFacadeOneWindowCH03(double facadeOneWindowCH03) {
		this.facadeOneWindowCH03 = facadeOneWindowCH03;
		this.setFacadeOneWindowCH(03, facadeOneWindowCH03);
		notifier.fireValueChange("facadeOneWindowCH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 03, 1, facadeOneWindowCH03);}
	}

	/**
	 * @return the facadeOneWindowCH04
	 */
	public double getFacadeOneWindowCH04() {
		return facadeOneWindowCH04;
	}

	/**
	 * @param facadeOneWindowCH04 the facadeOneWindowCH04 to set
	 */
	public void setFacadeOneWindowCH04(double facadeOneWindowCH04) {
		this.facadeOneWindowCH04 = facadeOneWindowCH04;
		this.setFacadeOneWindowCH(04, facadeOneWindowCH04);
		notifier.fireValueChange("facadeOneWindowCH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 04, 1, facadeOneWindowCH04);}
	}

	/**
	 * @return the facadeOneWindowCH05
	 */
	public double getFacadeOneWindowCH05() {
		return facadeOneWindowCH05;
	}

	/**
	 * @param facadeOneWindowCH05 the facadeOneWindowCH05 to set
	 */
	public void setFacadeOneWindowCH05(double facadeOneWindowCH05) {
		this.facadeOneWindowCH05 = facadeOneWindowCH05;
		this.setFacadeOneWindowCH(05, facadeOneWindowCH05);
		notifier.fireValueChange("facadeOneWindowCH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 05, 1, facadeOneWindowCH05);}
	}

	/**
	 * @return the facadeOneWindowCH06
	 */
	public double getFacadeOneWindowCH06() {
		return facadeOneWindowCH06;
	}

	/**
	 * @param facadeOneWindowCH06 the facadeOneWindowCH06 to set
	 */
	public void setFacadeOneWindowCH06(double facadeOneWindowCH06) {
		this.facadeOneWindowCH06 = facadeOneWindowCH06;
		this.setFacadeOneWindowCH(06, facadeOneWindowCH06);
		notifier.fireValueChange("facadeOneWindowCH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 06, 1, facadeOneWindowCH06);}
	}

	/**
	 * @return the facadeOneWindowCH07
	 */
	public double getFacadeOneWindowCH07() {
		return facadeOneWindowCH07;
	}

	/**
	 * @param facadeOneWindowCH07 the facadeOneWindowCH07 to set
	 */
	public void setFacadeOneWindowCH07(double facadeOneWindowCH07) {
		this.facadeOneWindowCH07 = facadeOneWindowCH07;
		this.setFacadeOneWindowCH(07, facadeOneWindowCH07);
		notifier.fireValueChange("facadeOneWindowCH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 07, 1, facadeOneWindowCH07);}
	}

	/**
	 * @return the facadeOneWindowCH08
	 */
	public double getFacadeOneWindowCH08() {
		return facadeOneWindowCH08;
	}

	/**
	 * @param facadeOneWindowCH08 the facadeOneWindowCH08 to set
	 */
	public void setFacadeOneWindowCH08(double facadeOneWindowCH08) {
		this.facadeOneWindowCH08 = facadeOneWindowCH08;
		this.setFacadeOneWindowCH(8, facadeOneWindowCH08);
		notifier.fireValueChange("facadeOneWindowCH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 8, 1, facadeOneWindowCH08);}
	}

	/**
	 * @return the facadeOneWindowCH09
	 */
	public double getFacadeOneWindowCH09() {
		return facadeOneWindowCH09;
	}

	/**
	 * @param facadeOneWindowCH09 the facadeOneWindowCH09 to set
	 */
	public void setFacadeOneWindowCH09(double facadeOneWindowCH09) {
		this.facadeOneWindowCH09 = facadeOneWindowCH09;
		this.setFacadeOneWindowCH(9, facadeOneWindowCH09);
		notifier.fireValueChange("facadeOneWindowCH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 9, 1, facadeOneWindowCH09);}
	}

	/**
	 * @return the facadeOneWindowCH10
	 */
	public double getFacadeOneWindowCH10() {
		return facadeOneWindowCH10;
	}

	/**
	 * @param facadeOneWindowCH10 the facadeOneWindowCH10 to set
	 */
	public void setFacadeOneWindowCH10(double facadeOneWindowCH10) {
		this.facadeOneWindowCH10 = facadeOneWindowCH10;
		this.setFacadeOneWindowCH(10, facadeOneWindowCH10);
		notifier.fireValueChange("facadeOneWindowCH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 10, 1, facadeOneWindowCH10);}
	}

	/**
	 * @return the facadeOneWindowCH11
	 */
	public double getFacadeOneWindowCH11() {
		return facadeOneWindowCH11;
	}

	/**
	 * @param facadeOneWindowCH11 the facadeOneWindowCH11 to set
	 */
	public void setFacadeOneWindowCH11(double facadeOneWindowCH11) {
		this.facadeOneWindowCH11 = facadeOneWindowCH11;
		this.setFacadeOneWindowCH(11, facadeOneWindowCH11);
		notifier.fireValueChange("facadeOneWindowCH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 11, 1, facadeOneWindowCH11);}
	}

	/**
	 * @return the facadeOneWindowCH12
	 */
	public double getFacadeOneWindowCH12() {
		return facadeOneWindowCH12;
	}

	/**
	 * @param facadeOneWindowCH12 the facadeOneWindowCH12 to set
	 */
	public void setFacadeOneWindowCH12(double facadeOneWindowCH12) {
		this.facadeOneWindowCH12 = facadeOneWindowCH12;
		this.setFacadeOneWindowCH(12, facadeOneWindowCH12);
		notifier.fireValueChange("facadeOneWindowCH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 12, 1, facadeOneWindowCH12);}
	}

	/**
	 * @return the facadeOneWindowCH13
	 */
	public double getFacadeOneWindowCH13() {
		return facadeOneWindowCH13;
	}

	/**
	 * @param facadeOneWindowCH13 the facadeOneWindowCH13 to set
	 */
	public void setFacadeOneWindowCH13(double facadeOneWindowCH13) {
		this.facadeOneWindowCH13 = facadeOneWindowCH13;
		this.setFacadeOneWindowCH(13, facadeOneWindowCH13);
		notifier.fireValueChange("facadeOneWindowCH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 13, 1, facadeOneWindowCH13);}
	}

	/**
	 * @return the facadeOneWindowCH14
	 */
	public double getFacadeOneWindowCH14() {
		return facadeOneWindowCH14;
	}

	/**
	 * @param facadeOneWindowCH14 the facadeOneWindowCH14 to set
	 */
	public void setFacadeOneWindowCH14(double facadeOneWindowCH14) {
		this.facadeOneWindowCH14 = facadeOneWindowCH14;
		this.setFacadeOneWindowCH(14, facadeOneWindowCH14);
		notifier.fireValueChange("facadeOneWindowCH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 14, 1, facadeOneWindowCH14);}
	}

	/**
	 * @return the facadeOneWindowCH15
	 */
	public double getFacadeOneWindowCH15() {
		return facadeOneWindowCH15;
	}

	/**
	 * @param facadeOneWindowCH15 the facadeOneWindowCH15 to set
	 */
	public void setFacadeOneWindowCH15(double facadeOneWindowCH15) {
		this.facadeOneWindowCH15 = facadeOneWindowCH15;
		this.setFacadeOneWindowCH(15, facadeOneWindowCH15);
		notifier.fireValueChange("facadeOneWindowCH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 15, 1, facadeOneWindowCH15);}
	}

	/**
	 * @return the facadeTwoWindowCH00
	 */
	public double getFacadeTwoWindowCH00() {
		return facadeTwoWindowCH00;
	}

	/**
	 * @param facadeTwoWindowCH00 the facadeTwoWindowCH00 to set
	 */
	public void setFacadeTwoWindowCH00(double facadeTwoWindowCH00) {
		this.facadeTwoWindowCH00 = facadeTwoWindowCH00;
		this.setFacadeTwoWindowCH(00, facadeTwoWindowCH00);
		notifier.fireValueChange("facadeTwoWindowCH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 00, 1, facadeTwoWindowCH00);}
	}

	/**
	 * @return the facadeTwoWindowCH01
	 */
	public double getFacadeTwoWindowCH01() {
		return facadeTwoWindowCH01;
	}

	/**
	 * @param facadeTwoWindowCH01 the facadeTwoWindowCH01 to set
	 */
	public void setFacadeTwoWindowCH01(double facadeTwoWindowCH01) {
		this.facadeTwoWindowCH01 = facadeTwoWindowCH01;
		this.setFacadeTwoWindowCH(01, facadeTwoWindowCH01);
		notifier.fireValueChange("facadeTwoWindowCH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 01, 1, facadeTwoWindowCH01);}
	}

	/**
	 * @return the facadeTwoWindowCH02
	 */
	public double getFacadeTwoWindowCH02() {
		return facadeTwoWindowCH02;
	}

	/**
	 * @param facadeTwoWindowCH02 the facadeTwoWindowCH02 to set
	 */
	public void setFacadeTwoWindowCH02(double facadeTwoWindowCH02) {
		this.facadeTwoWindowCH02 = facadeTwoWindowCH02;
		this.setFacadeTwoWindowCH(02, facadeTwoWindowCH02);
		notifier.fireValueChange("facadeTwoWindowCH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 02, 1, facadeTwoWindowCH02);}
	}

	/**
	 * @return the facadeTwoWindowCH03
	 */
	public double getFacadeTwoWindowCH03() {
		return facadeTwoWindowCH03;
	}

	/**
	 * @param facadeTwoWindowCH03 the facadeTwoWindowCH03 to set
	 */
	public void setFacadeTwoWindowCH03(double facadeTwoWindowCH03) {
		this.facadeTwoWindowCH03 = facadeTwoWindowCH03;
		this.setFacadeTwoWindowCH(03, facadeTwoWindowCH03);
		notifier.fireValueChange("facadeTwoWindowCH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 03, 1, facadeTwoWindowCH03);}
	}

	/**
	 * @return the facadeTwoWindowCH04
	 */
	public double getFacadeTwoWindowCH04() {
		return facadeTwoWindowCH04;
	}

	/**
	 * @param facadeTwoWindowCH04 the facadeTwoWindowCH04 to set
	 */
	public void setFacadeTwoWindowCH04(double facadeTwoWindowCH04) {
		this.facadeTwoWindowCH04 = facadeTwoWindowCH04;
		this.setFacadeTwoWindowCH(04, facadeTwoWindowCH04);
		notifier.fireValueChange("facadeTwoWindowCH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 04, 1, facadeTwoWindowCH04);}
	}

	/**
	 * @return the facadeTwoWindowCH05
	 */
	public double getFacadeTwoWindowCH05() {
		return facadeTwoWindowCH05;
	}

	/**
	 * @param facadeTwoWindowCH05 the facadeTwoWindowCH05 to set
	 */
	public void setFacadeTwoWindowCH05(double facadeTwoWindowCH05) {
		this.facadeTwoWindowCH05 = facadeTwoWindowCH05;
		this.setFacadeTwoWindowCH(05, facadeTwoWindowCH05);
		notifier.fireValueChange("facadeTwoWindowCH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 05, 1, facadeTwoWindowCH05);}
	}

	/**
	 * @return the facadeTwoWindowCH06
	 */
	public double getFacadeTwoWindowCH06() {
		return facadeTwoWindowCH06;
	}

	/**
	 * @param facadeTwoWindowCH06 the facadeTwoWindowCH06 to set
	 */
	public void setFacadeTwoWindowCH06(double facadeTwoWindowCH06) {
		this.facadeTwoWindowCH06 = facadeTwoWindowCH06;
		this.setFacadeTwoWindowCH(06, facadeTwoWindowCH06);
		notifier.fireValueChange("facadeTwoWindowCH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 06, 1, facadeTwoWindowCH06);}
	}

	/**
	 * @return the facadeTwoWindowCH07
	 */
	public double getFacadeTwoWindowCH07() {
		return facadeTwoWindowCH07;
	}

	/**
	 * @param facadeTwoWindowCH07 the facadeTwoWindowCH07 to set
	 */
	public void setFacadeTwoWindowCH07(double facadeTwoWindowCH07) {
		this.facadeTwoWindowCH07 = facadeTwoWindowCH07;
		this.setFacadeTwoWindowCH(07, facadeTwoWindowCH07);
		notifier.fireValueChange("facadeTwoWindowCH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 07, 1, facadeTwoWindowCH07);}
	}

	/**
	 * @return the facadeTwoWindowCH08
	 */
	public double getFacadeTwoWindowCH08() {
		return facadeTwoWindowCH08;
	}

	/**
	 * @param facadeTwoWindowCH08 the facadeTwoWindowCH08 to set
	 */
	public void setFacadeTwoWindowCH08(double facadeTwoWindowCH08) {
		this.facadeTwoWindowCH08 = facadeTwoWindowCH08;
		this.setFacadeTwoWindowCH(8, facadeTwoWindowCH08);
		notifier.fireValueChange("facadeTwoWindowCH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 8, 1, facadeTwoWindowCH08);}
	}

	/**
	 * @return the facadeTwoWindowCH09
	 */
	public double getFacadeTwoWindowCH09() {
		return facadeTwoWindowCH09;
	}

	/**
	 * @param facadeTwoWindowCH09 the facadeTwoWindowCH09 to set
	 */
	public void setFacadeTwoWindowCH09(double facadeTwoWindowCH09) {
		this.facadeTwoWindowCH09 = facadeTwoWindowCH09;
		this.setFacadeTwoWindowCH(9, facadeTwoWindowCH09);
		notifier.fireValueChange("facadeTwoWindowCH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 9, 1, facadeTwoWindowCH09);}
	}

	/**
	 * @return the facadeTwoWindowCH10
	 */
	public double getFacadeTwoWindowCH10() {
		return facadeTwoWindowCH10;
	}

	/**
	 * @param facadeTwoWindowCH10 the facadeTwoWindowCH10 to set
	 */
	public void setFacadeTwoWindowCH10(double facadeTwoWindowCH10) {
		this.facadeTwoWindowCH10 = facadeTwoWindowCH10;
		this.setFacadeTwoWindowCH(10, facadeTwoWindowCH10);
		notifier.fireValueChange("facadeTwoWindowCH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 10, 1, facadeTwoWindowCH10);}
	}

	/**
	 * @return the facadeTwoWindowCH11
	 */
	public double getFacadeTwoWindowCH11() {
		return facadeTwoWindowCH11;
	}

	/**
	 * @param facadeTwoWindowCH11 the facadeTwoWindowCH11 to set
	 */
	public void setFacadeTwoWindowCH11(double facadeTwoWindowCH11) {
		this.facadeTwoWindowCH11 = facadeTwoWindowCH11;
		this.setFacadeTwoWindowCH(11, facadeTwoWindowCH11);
		notifier.fireValueChange("facadeTwoWindowCH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 11, 1, facadeTwoWindowCH11);}
	}

	/**
	 * @return the facadeTwoWindowCH12
	 */
	public double getFacadeTwoWindowCH12() {
		return facadeTwoWindowCH12;
	}

	/**
	 * @param facadeTwoWindowCH12 the facadeTwoWindowCH12 to set
	 */
	public void setFacadeTwoWindowCH12(double facadeTwoWindowCH12) {
		this.facadeTwoWindowCH12 = facadeTwoWindowCH12;
		this.setFacadeTwoWindowCH(12, facadeTwoWindowCH12);
		notifier.fireValueChange("facadeTwoWindowCH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 12, 1, facadeTwoWindowCH12);}
	}

	/**
	 * @return the facadeTwoWindowCH13
	 */
	public double getFacadeTwoWindowCH13() {
		return facadeTwoWindowCH13;
	}

	/**
	 * @param facadeTwoWindowCH13 the facadeTwoWindowCH13 to set
	 */
	public void setFacadeTwoWindowCH13(double facadeTwoWindowCH13) {
		this.facadeTwoWindowCH13 = facadeTwoWindowCH13;
		this.setFacadeTwoWindowCH(13, facadeTwoWindowCH13);
		notifier.fireValueChange("facadeTwoWindowCH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 13, 1, facadeTwoWindowCH13);}
	}

	/**
	 * @return the facadeTwoWindowCH14
	 */
	public double getFacadeTwoWindowCH14() {
		return facadeTwoWindowCH14;
	}

	/**
	 * @param facadeTwoWindowCH14 the facadeTwoWindowCH14 to set
	 */
	public void setFacadeTwoWindowCH14(double facadeTwoWindowCH14) {
		this.facadeTwoWindowCH14 = facadeTwoWindowCH14;
		this.setFacadeTwoWindowCH(14, facadeTwoWindowCH14);
		notifier.fireValueChange("facadeTwoWindowCH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 14, 1, facadeTwoWindowCH14);}
	}

	/**
	 * @return the facadeTwoWindowCH15
	 */
	public double getFacadeTwoWindowCH15() {
		return facadeTwoWindowCH15;
	}

	/**
	 * @param facadeTwoWindowCH15 the facadeTwoWindowCH15 to set
	 */
	public void setFacadeTwoWindowCH15(double facadeTwoWindowCH15) {
		this.facadeTwoWindowCH15 = facadeTwoWindowCH15;
		this.setFacadeTwoWindowCH(15, facadeTwoWindowCH15);
		notifier.fireValueChange("facadeTwoWindowCH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 15, 1, facadeTwoWindowCH15);}
	}

	/**
	 * @return the facadeThreeWindowCH00
	 */
	public double getFacadeThreeWindowCH00() {
		return facadeThreeWindowCH00;
	}

	/**
	 * @param facadeThreeWindowCH00 the facadeThreeWindowCH00 to set
	 */
	public void setFacadeThreeWindowCH00(double facadeThreeWindowCH00) {
		this.facadeThreeWindowCH00 = facadeThreeWindowCH00;
		this.setFacadeThreeWindowCH(00, facadeThreeWindowCH00);
		notifier.fireValueChange("facadeThreeWindowCH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 00, 1, facadeThreeWindowCH00);}
	}

	/**
	 * @return the facadeThreeWindowCH01
	 */
	public double getFacadeThreeWindowCH01() {
		return facadeThreeWindowCH01;
	}

	/**
	 * @param facadeThreeWindowCH01 the facadeThreeWindowCH01 to set
	 */
	public void setFacadeThreeWindowCH01(double facadeThreeWindowCH01) {
		this.facadeThreeWindowCH01 = facadeThreeWindowCH01;
		this.setFacadeThreeWindowCH(01, facadeThreeWindowCH01);
		notifier.fireValueChange("facadeThreeWindowCH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 01, 1, facadeThreeWindowCH01);}
	}

	/**
	 * @return the facadeThreeWindowCH02
	 */
	public double getFacadeThreeWindowCH02() {
		return facadeThreeWindowCH02;
	}

	/**
	 * @param facadeThreeWindowCH02 the facadeThreeWindowCH02 to set
	 */
	public void setFacadeThreeWindowCH02(double facadeThreeWindowCH02) {
		this.facadeThreeWindowCH02 = facadeThreeWindowCH02;
		this.setFacadeThreeWindowCH(02, facadeThreeWindowCH02);
		notifier.fireValueChange("facadeThreeWindowCH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 02, 1, facadeThreeWindowCH02);}
	}

	/**
	 * @return the facadeThreeWindowCH03
	 */
	public double getFacadeThreeWindowCH03() {
		return facadeThreeWindowCH03;
	}

	/**
	 * @param facadeThreeWindowCH03 the facadeThreeWindowCH03 to set
	 */
	public void setFacadeThreeWindowCH03(double facadeThreeWindowCH03) {
		this.facadeThreeWindowCH03 = facadeThreeWindowCH03;
		this.setFacadeThreeWindowCH(03, facadeThreeWindowCH03);
		notifier.fireValueChange("facadeThreeWindowCH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 03, 1, facadeThreeWindowCH03);}
	}

	/**
	 * @return the facadeThreeWindowCH04
	 */
	public double getFacadeThreeWindowCH04() {
		return facadeThreeWindowCH04;
	}

	/**
	 * @param facadeThreeWindowCH04 the facadeThreeWindowCH04 to set
	 */
	public void setFacadeThreeWindowCH04(double facadeThreeWindowCH04) {
		this.facadeThreeWindowCH04 = facadeThreeWindowCH04;
		this.setFacadeThreeWindowCH(04, facadeThreeWindowCH04);
		notifier.fireValueChange("facadeThreeWindowCH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 04, 1, facadeThreeWindowCH04);}
	}

	/**
	 * @return the facadeThreeWindowCH05
	 */
	public double getFacadeThreeWindowCH05() {
		return facadeThreeWindowCH05;
	}

	/**
	 * @param facadeThreeWindowCH05 the facadeThreeWindowCH05 to set
	 */
	public void setFacadeThreeWindowCH05(double facadeThreeWindowCH05) {
		this.facadeThreeWindowCH05 = facadeThreeWindowCH05;
		this.setFacadeThreeWindowCH(05, facadeThreeWindowCH05);
		notifier.fireValueChange("facadeThreeWindowCH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 05, 1, facadeThreeWindowCH05);}
	}

	/**
	 * @return the facadeThreeWindowCH06
	 */
	public double getFacadeThreeWindowCH06() {
		return facadeThreeWindowCH06;
	}

	/**
	 * @param facadeThreeWindowCH06 the facadeThreeWindowCH06 to set
	 */
	public void setFacadeThreeWindowCH06(double facadeThreeWindowCH06) {
		this.facadeThreeWindowCH06 = facadeThreeWindowCH06;
		this.setFacadeThreeWindowCH(06, facadeThreeWindowCH06);
		notifier.fireValueChange("facadeThreeWindowCH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 06, 1, facadeThreeWindowCH06);}
	}

	/**
	 * @return the facadeThreeWindowCH07
	 */
	public double getFacadeThreeWindowCH07() {
		return facadeThreeWindowCH07;
	}

	/**
	 * @param facadeThreeWindowCH07 the facadeThreeWindowCH07 to set
	 */
	public void setFacadeThreeWindowCH07(double facadeThreeWindowCH07) {
		this.facadeThreeWindowCH07 = facadeThreeWindowCH07;
		this.setFacadeThreeWindowCH(07, facadeThreeWindowCH07);
		notifier.fireValueChange("facadeThreeWindowCH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 07, 1, facadeThreeWindowCH07);}
	}

	/**
	 * @return the facadeThreeWindowCH08
	 */
	public double getFacadeThreeWindowCH08() {
		return facadeThreeWindowCH08;
	}

	/**
	 * @param facadeThreeWindowCH08 the facadeThreeWindowCH08 to set
	 */
	public void setFacadeThreeWindowCH08(double facadeThreeWindowCH08) {
		this.facadeThreeWindowCH08 = facadeThreeWindowCH08;
		this.setFacadeThreeWindowCH(8, facadeThreeWindowCH08);
		notifier.fireValueChange("facadeThreeWindowCH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 8, 1, facadeThreeWindowCH08);}
	}

	/**
	 * @return the facadeThreeWindowCH09
	 */
	public double getFacadeThreeWindowCH09() {
		return facadeThreeWindowCH09;
	}

	/**
	 * @param facadeThreeWindowCH09 the facadeThreeWindowCH09 to set
	 */
	public void setFacadeThreeWindowCH09(double facadeThreeWindowCH09) {
		this.facadeThreeWindowCH09 = facadeThreeWindowCH09;
		this.setFacadeThreeWindowCH(9, facadeThreeWindowCH09);
		notifier.fireValueChange("facadeThreeWindowCH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 9, 1, facadeThreeWindowCH09);}
	}

	/**
	 * @return the facadeThreeWindowCH10
	 */
	public double getFacadeThreeWindowCH10() {
		return facadeThreeWindowCH10;
	}

	/**
	 * @param facadeThreeWindowCH10 the facadeThreeWindowCH10 to set
	 */
	public void setFacadeThreeWindowCH10(double facadeThreeWindowCH10) {
		this.facadeThreeWindowCH10 = facadeThreeWindowCH10;
		this.setFacadeThreeWindowCH(10, facadeThreeWindowCH10);
		notifier.fireValueChange("facadeThreeWindowCH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 10, 1, facadeThreeWindowCH10);}
	}

	/**
	 * @return the facadeThreeWindowCH11
	 */
	public double getFacadeThreeWindowCH11() {
		return facadeThreeWindowCH11;
	}

	/**
	 * @param facadeThreeWindowCH11 the facadeThreeWindowCH11 to set
	 */
	public void setFacadeThreeWindowCH11(double facadeThreeWindowCH11) {
		this.facadeThreeWindowCH11 = facadeThreeWindowCH11;
		this.setFacadeThreeWindowCH(11, facadeThreeWindowCH11);
		notifier.fireValueChange("facadeThreeWindowCH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 11, 1, facadeThreeWindowCH11);}
	}

	/**
	 * @return the facadeThreeWindowCH12
	 */
	public double getFacadeThreeWindowCH12() {
		return facadeThreeWindowCH12;
	}

	/**
	 * @param facadeThreeWindowCH12 the facadeThreeWindowCH12 to set
	 */
	public void setFacadeThreeWindowCH12(double facadeThreeWindowCH12) {
		this.facadeThreeWindowCH12 = facadeThreeWindowCH12;
		this.setFacadeThreeWindowCH(12, facadeThreeWindowCH12);
		notifier.fireValueChange("facadeThreeWindowCH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 12, 1, facadeThreeWindowCH12);}
	}

	/**
	 * @return the facadeThreeWindowCH13
	 */
	public double getFacadeThreeWindowCH13() {
		return facadeThreeWindowCH13;
	}

	/**
	 * @param facadeThreeWindowCH13 the facadeThreeWindowCH13 to set
	 */
	public void setFacadeThreeWindowCH13(double facadeThreeWindowCH13) {
		this.facadeThreeWindowCH13 = facadeThreeWindowCH13;
		this.setFacadeThreeWindowCH(13, facadeThreeWindowCH13);
		notifier.fireValueChange("facadeThreeWindowCH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 13, 1, facadeThreeWindowCH13);}
	}

	/**
	 * @return the facadeThreeWindowCH14
	 */
	public double getFacadeThreeWindowCH14() {
		return facadeThreeWindowCH14;
	}

	/**
	 * @param facadeThreeWindowCH14 the facadeThreeWindowCH14 to set
	 */
	public void setFacadeThreeWindowCH14(double facadeThreeWindowCH14) {
		this.facadeThreeWindowCH14 = facadeThreeWindowCH14;
		this.setFacadeThreeWindowCH(14, facadeThreeWindowCH14);
		notifier.fireValueChange("facadeThreeWindowCH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 14, 1, facadeThreeWindowCH14);}
	}

	/**
	 * @return the facadeThreeWindowCH15
	 */
	public double getFacadeThreeWindowCH15() {
		return facadeThreeWindowCH15;
	}

	/**
	 * @param facadeThreeWindowCH15 the facadeThreeWindowCH15 to set
	 */
	public void setFacadeThreeWindowCH15(double facadeThreeWindowCH15) {
		this.facadeThreeWindowCH15 = facadeThreeWindowCH15;
		this.setFacadeThreeWindowCH(15, facadeThreeWindowCH15);
		notifier.fireValueChange("facadeThreeWindowCH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 15, 1, facadeThreeWindowCH15);}
	}

	/**
	 * @return the facadeFourWindowCH00
	 */
	public double getFacadeFourWindowCH00() {
		return facadeFourWindowCH00;
	}

	/**
	 * @param facadeFourWindowCH00 the facadeFourWindowCH00 to set
	 */
	public void setFacadeFourWindowCH00(double facadeFourWindowCH00) {
		this.facadeFourWindowCH00 = facadeFourWindowCH00;
		this.setFacadeFourWindowCH(00, facadeFourWindowCH00);
		notifier.fireValueChange("facadeFourWindowCH00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 00, 1, facadeFourWindowCH00);}
	}

	/**
	 * @return the facadeFourWindowCH01
	 */
	public double getFacadeFourWindowCH01() {
		return facadeFourWindowCH01;
	}

	/**
	 * @param facadeFourWindowCH01 the facadeFourWindowCH01 to set
	 */
	public void setFacadeFourWindowCH01(double facadeFourWindowCH01) {
		this.facadeFourWindowCH01 = facadeFourWindowCH01;
		this.setFacadeFourWindowCH(01, facadeFourWindowCH01);
		notifier.fireValueChange("facadeFourWindowCH01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 01, 1, facadeFourWindowCH01);}
	}

	/**
	 * @return the facadeFourWindowCH02
	 */
	public double getFacadeFourWindowCH02() {
		return facadeFourWindowCH02;
	}

	/**
	 * @param facadeFourWindowCH02 the facadeFourWindowCH02 to set
	 */
	public void setFacadeFourWindowCH02(double facadeFourWindowCH02) {
		this.facadeFourWindowCH02 = facadeFourWindowCH02;
		this.setFacadeFourWindowCH(02, facadeFourWindowCH02);
		notifier.fireValueChange("facadeFourWindowCH02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 02, 1, facadeFourWindowCH02);}
	}

	/**
	 * @return the facadeFourWindowCH03
	 */
	public double getFacadeFourWindowCH03() {
		return facadeFourWindowCH03;
	}

	/**
	 * @param facadeFourWindowCH03 the facadeFourWindowCH03 to set
	 */
	public void setFacadeFourWindowCH03(double facadeFourWindowCH03) {
		this.facadeFourWindowCH03 = facadeFourWindowCH03;
		this.setFacadeFourWindowCH(03, facadeFourWindowCH03);
		notifier.fireValueChange("facadeFourWindowCH03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 03, 1, facadeFourWindowCH03);}
	}

	/**
	 * @return the facadeFourWindowCH04
	 */
	public double getFacadeFourWindowCH04() {
		return facadeFourWindowCH04;
	}

	/**
	 * @param facadeFourWindowCH04 the facadeFourWindowCH04 to set
	 */
	public void setFacadeFourWindowCH04(double facadeFourWindowCH04) {
		this.facadeFourWindowCH04 = facadeFourWindowCH04;
		this.setFacadeFourWindowCH(04, facadeFourWindowCH04);
		notifier.fireValueChange("facadeFourWindowCH04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 04, 1, facadeFourWindowCH04);}
	}

	/**
	 * @return the facadeFourWindowCH05
	 */
	public double getFacadeFourWindowCH05() {
		return facadeFourWindowCH05;
	}

	/**
	 * @param facadeFourWindowCH05 the facadeFourWindowCH05 to set
	 */
	public void setFacadeFourWindowCH05(double facadeFourWindowCH05) {
		this.facadeFourWindowCH05 = facadeFourWindowCH05;
		this.setFacadeFourWindowCH(05, facadeFourWindowCH05);
		notifier.fireValueChange("facadeFourWindowCH05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 05, 1, facadeFourWindowCH05);}
	}

	/**
	 * @return the facadeFourWindowCH06
	 */
	public double getFacadeFourWindowCH06() {
		return facadeFourWindowCH06;
	}

	/**
	 * @param facadeFourWindowCH06 the facadeFourWindowCH06 to set
	 */
	public void setFacadeFourWindowCH06(double facadeFourWindowCH06) {
		this.facadeFourWindowCH06 = facadeFourWindowCH06;
		this.setFacadeFourWindowCH(06, facadeFourWindowCH06);
		notifier.fireValueChange("facadeFourWindowCH06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 06, 1, facadeFourWindowCH06);}
	}

	/**
	 * @return the facadeFourWindowCH07
	 */
	public double getFacadeFourWindowCH07() {
		return facadeFourWindowCH07;
	}

	/**
	 * @param facadeFourWindowCH07 the facadeFourWindowCH07 to set
	 */
	public void setFacadeFourWindowCH07(double facadeFourWindowCH07) {
		this.facadeFourWindowCH07 = facadeFourWindowCH07;
		this.setFacadeFourWindowCH(07, facadeFourWindowCH07);
		notifier.fireValueChange("facadeFourWindowCH07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 07, 1, facadeFourWindowCH07);}
	}

	/**
	 * @return the facadeFourWindowCH08
	 */
	public double getFacadeFourWindowCH08() {
		return facadeFourWindowCH08;
	}

	/**
	 * @param facadeFourWindowCH08 the facadeFourWindowCH08 to set
	 */
	public void setFacadeFourWindowCH08(double facadeFourWindowCH08) {
		this.facadeFourWindowCH08 = facadeFourWindowCH08;
		this.setFacadeFourWindowCH(8, facadeFourWindowCH08);
		notifier.fireValueChange("facadeFourWindowCH08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 8, 1, facadeFourWindowCH08);}
	}

	/**
	 * @return the facadeFourWindowCH09
	 */
	public double getFacadeFourWindowCH09() {
		return facadeFourWindowCH09;
	}

	/**
	 * @param facadeFourWindowCH09 the facadeFourWindowCH09 to set
	 */
	public void setFacadeFourWindowCH09(double facadeFourWindowCH09) {
		this.facadeFourWindowCH09 = facadeFourWindowCH09;
		this.setFacadeFourWindowCH(9, facadeFourWindowCH09);
		notifier.fireValueChange("facadeFourWindowCH09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 9, 1, facadeFourWindowCH09);}
	}

	/**
	 * @return the facadeFourWindowCH10
	 */
	public double getFacadeFourWindowCH10() {
		return facadeFourWindowCH10;
	}

	/**
	 * @param facadeFourWindowCH10 the facadeFourWindowCH10 to set
	 */
	public void setFacadeFourWindowCH10(double facadeFourWindowCH10) {
		this.facadeFourWindowCH10 = facadeFourWindowCH10;
		this.setFacadeFourWindowCH(10, facadeFourWindowCH10);
		notifier.fireValueChange("facadeFourWindowCH10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 10, 1, facadeFourWindowCH10);}
	}

	/**
	 * @return the facadeFourWindowCH11
	 */
	public double getFacadeFourWindowCH11() {
		return facadeFourWindowCH11;
	}

	/**
	 * @param facadeFourWindowCH11 the facadeFourWindowCH11 to set
	 */
	public void setFacadeFourWindowCH11(double facadeFourWindowCH11) {
		this.facadeFourWindowCH11 = facadeFourWindowCH11;
		this.setFacadeFourWindowCH(11, facadeFourWindowCH11);
		notifier.fireValueChange("facadeFourWindowCH11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 11, 1, facadeFourWindowCH11);}
	}

	/**
	 * @return the facadeFourWindowCH12
	 */
	public double getFacadeFourWindowCH12() {
		return facadeFourWindowCH12;
	}

	/**
	 * @param facadeFourWindowCH12 the facadeFourWindowCH12 to set
	 */
	public void setFacadeFourWindowCH12(double facadeFourWindowCH12) {
		this.facadeFourWindowCH12 = facadeFourWindowCH12;
		this.setFacadeFourWindowCH(12, facadeFourWindowCH12);
		notifier.fireValueChange("facadeFourWindowCH12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 12, 1, facadeFourWindowCH12);}
	}

	/**
	 * @return the facadeFourWindowCH13
	 */
	public double getFacadeFourWindowCH13() {
		return facadeFourWindowCH13;
	}

	/**
	 * @param facadeFourWindowCH13 the facadeFourWindowCH13 to set
	 */
	public void setFacadeFourWindowCH13(double facadeFourWindowCH13) {
		this.facadeFourWindowCH13 = facadeFourWindowCH13;
		this.setFacadeFourWindowCH(13, facadeFourWindowCH13);
		notifier.fireValueChange("facadeFourWindowCH13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 13, 1, facadeFourWindowCH13);}
	}

	/**
	 * @return the facadeFourWindowCH14
	 */
	public double getFacadeFourWindowCH14() {
		return facadeFourWindowCH14;
	}

	/**
	 * @param facadeFourWindowCH14 the facadeFourWindowCH14 to set
	 */
	public void setFacadeFourWindowCH14(double facadeFourWindowCH14) {
		this.facadeFourWindowCH14 = facadeFourWindowCH14;
		this.setFacadeFourWindowCH(14, facadeFourWindowCH14);
		notifier.fireValueChange("facadeFourWindowCH14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 14, 1, facadeFourWindowCH14);}
	}

	/**
	 * @return the facadeFourWindowCH15
	 */
	public double getFacadeFourWindowCH15() {
		return facadeFourWindowCH15;
	}

	/**
	 * @param facadeFourWindowCH15 the facadeFourWindowCH15 to set
	 */
	public void setFacadeFourWindowCH15(double facadeFourWindowCH15) {
		this.facadeFourWindowCH15 = facadeFourWindowCH15;
		this.setFacadeFourWindowCH(15, facadeFourWindowCH15);
		notifier.fireValueChange("facadeFourWindowCH15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 15, 1, facadeFourWindowCH15);}
	}

	/**
	 * @return the facadeOneWindowRV00
	 */
	public double getFacadeOneWindowRV00() {
		return facadeOneWindowRV00;
	}

	/**
	 * @param facadeOneWindowRV00 the facadeOneWindowRV00 to set
	 */
	public void setFacadeOneWindowRV00(double facadeOneWindowRV00) {
		this.facadeOneWindowRV00 = facadeOneWindowRV00;
		this.setFacadeOneWindowRV(00, facadeOneWindowRV00);
		notifier.fireValueChange("facadeOneWindowRV00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 00, 2, facadeOneWindowRV00);}
	}

	/**
	 * @return the facadeOneWindowRV01
	 */
	public double getFacadeOneWindowRV01() {
		return facadeOneWindowRV01;
	}

	/**
	 * @param facadeOneWindowRV01 the facadeOneWindowRV01 to set
	 */
	public void setFacadeOneWindowRV01(double facadeOneWindowRV01) {
		this.facadeOneWindowRV01 = facadeOneWindowRV01;
		this.setFacadeOneWindowRV(01, facadeOneWindowRV01);
		notifier.fireValueChange("facadeOneWindowRV01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 01, 2, facadeOneWindowRV01);}
	}

	/**
	 * @return the facadeOneWindowRV02
	 */
	public double getFacadeOneWindowRV02() {
		return facadeOneWindowRV02;
	}

	/**
	 * @param facadeOneWindowRV02 the facadeOneWindowRV02 to set
	 */
	public void setFacadeOneWindowRV02(double facadeOneWindowRV02) {
		this.facadeOneWindowRV02 = facadeOneWindowRV02;
		this.setFacadeOneWindowRV(02, facadeOneWindowRV02);
		notifier.fireValueChange("facadeOneWindowRV02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 02, 2, facadeOneWindowRV02);}
	}

	/**
	 * @return the facadeOneWindowRV03
	 */
	public double getFacadeOneWindowRV03() {
		return facadeOneWindowRV03;
	}

	/**
	 * @param facadeOneWindowRV03 the facadeOneWindowRV03 to set
	 */
	public void setFacadeOneWindowRV03(double facadeOneWindowRV03) {
		this.facadeOneWindowRV03 = facadeOneWindowRV03;
		this.setFacadeOneWindowRV(03, facadeOneWindowRV03);
		notifier.fireValueChange("facadeOneWindowRV03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 03, 2, facadeOneWindowRV03);}
	}

	/**
	 * @return the facadeOneWindowRV04
	 */
	public double getFacadeOneWindowRV04() {
		return facadeOneWindowRV04;
	}

	/**
	 * @param facadeOneWindowRV04 the facadeOneWindowRV04 to set
	 */
	public void setFacadeOneWindowRV04(double facadeOneWindowRV04) {
		this.facadeOneWindowRV04 = facadeOneWindowRV04;
		this.setFacadeOneWindowRV(04, facadeOneWindowRV04);
		notifier.fireValueChange("facadeOneWindowRV04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 04, 2, facadeOneWindowRV04);}
	}

	/**
	 * @return the facadeOneWindowRV05
	 */
	public double getFacadeOneWindowRV05() {
		return facadeOneWindowRV05;
	}

	/**
	 * @param facadeOneWindowRV05 the facadeOneWindowRV05 to set
	 */
	public void setFacadeOneWindowRV05(double facadeOneWindowRV05) {
		this.facadeOneWindowRV05 = facadeOneWindowRV05;
		this.setFacadeOneWindowRV(05, facadeOneWindowRV05);
		notifier.fireValueChange("facadeOneWindowRV05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 05, 2, facadeOneWindowRV05);}
	}

	/**
	 * @return the facadeOneWindowRV06
	 */
	public double getFacadeOneWindowRV06() {
		return facadeOneWindowRV06;
	}

	/**
	 * @param facadeOneWindowRV06 the facadeOneWindowRV06 to set
	 */
	public void setFacadeOneWindowRV06(double facadeOneWindowRV06) {
		this.facadeOneWindowRV06 = facadeOneWindowRV06;
		this.setFacadeOneWindowRV(06, facadeOneWindowRV06);
		notifier.fireValueChange("facadeOneWindowRV06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 06, 2, facadeOneWindowRV06);}
	}

	/**
	 * @return the facadeOneWindowRV07
	 */
	public double getFacadeOneWindowRV07() {
		return facadeOneWindowRV07;
	}

	/**
	 * @param facadeOneWindowRV07 the facadeOneWindowRV07 to set
	 */
	public void setFacadeOneWindowRV07(double facadeOneWindowRV07) {
		this.facadeOneWindowRV07 = facadeOneWindowRV07;
		this.setFacadeOneWindowRV(07, facadeOneWindowRV07);
		notifier.fireValueChange("facadeOneWindowRV07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 07, 2, facadeOneWindowRV07);}
	}

	/**
	 * @return the facadeOneWindowRV08
	 */
	public double getFacadeOneWindowRV08() {
		return facadeOneWindowRV08;
	}

	/**
	 * @param facadeOneWindowRV08 the facadeOneWindowRV08 to set
	 */
	public void setFacadeOneWindowRV08(double facadeOneWindowRV08) {
		this.facadeOneWindowRV08 = facadeOneWindowRV08;
		this.setFacadeOneWindowRV(8, facadeOneWindowRV08);
		notifier.fireValueChange("facadeOneWindowRV08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 8, 2, facadeOneWindowRV08);}
	}

	/**
	 * @return the facadeOneWindowRV09
	 */
	public double getFacadeOneWindowRV09() {
		return facadeOneWindowRV09;
	}

	/**
	 * @param facadeOneWindowRV09 the facadeOneWindowRV09 to set
	 */
	public void setFacadeOneWindowRV09(double facadeOneWindowRV09) {
		this.facadeOneWindowRV09 = facadeOneWindowRV09;
		this.setFacadeOneWindowRV(9, facadeOneWindowRV09);
		notifier.fireValueChange("facadeOneWindowRV09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 9, 2, facadeOneWindowRV09);}
	}

	/**
	 * @return the facadeOneWindowRV10
	 */
	public double getFacadeOneWindowRV10() {
		return facadeOneWindowRV10;
	}

	/**
	 * @param facadeOneWindowRV10 the facadeOneWindowRV10 to set
	 */
	public void setFacadeOneWindowRV10(double facadeOneWindowRV10) {
		this.facadeOneWindowRV10 = facadeOneWindowRV10;
		this.setFacadeOneWindowRV(10, facadeOneWindowRV10);
		notifier.fireValueChange("facadeOneWindowRV10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 10, 2, facadeOneWindowRV10);}
	}

	/**
	 * @return the facadeOneWindowRV11
	 */
	public double getFacadeOneWindowRV11() {
		return facadeOneWindowRV11;
	}

	/**
	 * @param facadeOneWindowRV11 the facadeOneWindowRV11 to set
	 */
	public void setFacadeOneWindowRV11(double facadeOneWindowRV11) {
		this.facadeOneWindowRV11 = facadeOneWindowRV11;
		this.setFacadeOneWindowRV(11, facadeOneWindowRV11);
		notifier.fireValueChange("facadeOneWindowRV11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 11, 2, facadeOneWindowRV11);}
	}

	/**
	 * @return the facadeOneWindowRV12
	 */
	public double getFacadeOneWindowRV12() {
		return facadeOneWindowRV12;
	}

	/**
	 * @param facadeOneWindowRV12 the facadeOneWindowRV12 to set
	 */
	public void setFacadeOneWindowRV12(double facadeOneWindowRV12) {
		this.facadeOneWindowRV12 = facadeOneWindowRV12;
		this.setFacadeOneWindowRV(12, facadeOneWindowRV12);
		notifier.fireValueChange("facadeOneWindowRV12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 12, 2, facadeOneWindowRV12);}
	}

	/**
	 * @return the facadeOneWindowRV13
	 */
	public double getFacadeOneWindowRV13() {
		return facadeOneWindowRV13;
	}

	/**
	 * @param facadeOneWindowRV13 the facadeOneWindowRV13 to set
	 */
	public void setFacadeOneWindowRV13(double facadeOneWindowRV13) {
		this.facadeOneWindowRV13 = facadeOneWindowRV13;
		this.setFacadeOneWindowRV(13, facadeOneWindowRV13);
		notifier.fireValueChange("facadeOneWindowRV13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 13, 2, facadeOneWindowRV13);}
	}

	/**
	 * @return the facadeOneWindowRV14
	 */
	public double getFacadeOneWindowRV14() {
		return facadeOneWindowRV14;
	}

	/**
	 * @param facadeOneWindowRV14 the facadeOneWindowRV14 to set
	 */
	public void setFacadeOneWindowRV14(double facadeOneWindowRV14) {
		this.facadeOneWindowRV14 = facadeOneWindowRV14;
		this.setFacadeOneWindowRV(14, facadeOneWindowRV14);
		notifier.fireValueChange("facadeOneWindowRV14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 14, 2, facadeOneWindowRV14);}
	}

	/**
	 * @return the facadeOneWindowRV15
	 */
	public double getFacadeOneWindowRV15() {
		return facadeOneWindowRV15;
	}

	/**
	 * @param facadeOneWindowRV15 the facadeOneWindowRV15 to set
	 */
	public void setFacadeOneWindowRV15(double facadeOneWindowRV15) {
		this.facadeOneWindowRV15 = facadeOneWindowRV15;
		this.setFacadeOneWindowRV(15, facadeOneWindowRV15);
		notifier.fireValueChange("facadeOneWindowRV15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(0, 15, 2, facadeOneWindowRV15);}
	}

	/**
	 * @return the facadeTwoWindowRV00
	 */
	public double getFacadeTwoWindowRV00() {
		return facadeTwoWindowRV00;
	}

	/**
	 * @param facadeTwoWindowRV00 the facadeTwoWindowRV00 to set
	 */
	public void setFacadeTwoWindowRV00(double facadeTwoWindowRV00) {
		this.facadeTwoWindowRV00 = facadeTwoWindowRV00;
		this.setFacadeTwoWindowRV(00, facadeTwoWindowRV00);
		notifier.fireValueChange("facadeTwoWindowRV00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 00, 2, facadeTwoWindowRV00);}
	}

	/**
	 * @return the facadeTwoWindowRV01
	 */
	public double getFacadeTwoWindowRV01() {
		return facadeTwoWindowRV01;
	}

	/**
	 * @param facadeTwoWindowRV01 the facadeTwoWindowRV01 to set
	 */
	public void setFacadeTwoWindowRV01(double facadeTwoWindowRV01) {
		this.facadeTwoWindowRV01 = facadeTwoWindowRV01;
		this.setFacadeTwoWindowRV(01, facadeTwoWindowRV01);
		notifier.fireValueChange("facadeTwoWindowRV01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 01, 2, facadeTwoWindowRV01);}
	}

	/**
	 * @return the facadeTwoWindowRV02
	 */
	public double getFacadeTwoWindowRV02() {
		return facadeTwoWindowRV02;
	}

	/**
	 * @param facadeTwoWindowRV02 the facadeTwoWindowRV02 to set
	 */
	public void setFacadeTwoWindowRV02(double facadeTwoWindowRV02) {
		this.facadeTwoWindowRV02 = facadeTwoWindowRV02;
		this.setFacadeTwoWindowRV(02, facadeTwoWindowRV02);
		notifier.fireValueChange("facadeTwoWindowRV02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 02, 2, facadeTwoWindowRV02);}
	}

	/**
	 * @return the facadeTwoWindowRV03
	 */
	public double getFacadeTwoWindowRV03() {
		return facadeTwoWindowRV03;
	}

	/**
	 * @param facadeTwoWindowRV03 the facadeTwoWindowRV03 to set
	 */
	public void setFacadeTwoWindowRV03(double facadeTwoWindowRV03) {
		this.facadeTwoWindowRV03 = facadeTwoWindowRV03;
		this.setFacadeTwoWindowRV(03, facadeTwoWindowRV03);
		notifier.fireValueChange("facadeTwoWindowRV03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 03, 2, facadeTwoWindowRV03);}
	}

	/**
	 * @return the facadeTwoWindowRV04
	 */
	public double getFacadeTwoWindowRV04() {
		return facadeTwoWindowRV04;
	}

	/**
	 * @param facadeTwoWindowRV04 the facadeTwoWindowRV04 to set
	 */
	public void setFacadeTwoWindowRV04(double facadeTwoWindowRV04) {
		this.facadeTwoWindowRV04 = facadeTwoWindowRV04;
		this.setFacadeTwoWindowRV(04, facadeTwoWindowRV04);
		notifier.fireValueChange("facadeTwoWindowRV04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 04, 2, facadeTwoWindowRV04);}
	}

	/**
	 * @return the facadeTwoWindowRV05
	 */
	public double getFacadeTwoWindowRV05() {
		return facadeTwoWindowRV05;
	}

	/**
	 * @param facadeTwoWindowRV05 the facadeTwoWindowRV05 to set
	 */
	public void setFacadeTwoWindowRV05(double facadeTwoWindowRV05) {
		this.facadeTwoWindowRV05 = facadeTwoWindowRV05;
		this.setFacadeTwoWindowRV(05, facadeTwoWindowRV05);
		notifier.fireValueChange("facadeTwoWindowRV05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 05, 2, facadeTwoWindowRV05);}
	}

	/**
	 * @return the facadeTwoWindowRV06
	 */
	public double getFacadeTwoWindowRV06() {
		return facadeTwoWindowRV06;
	}

	/**
	 * @param facadeTwoWindowRV06 the facadeTwoWindowRV06 to set
	 */
	public void setFacadeTwoWindowRV06(double facadeTwoWindowRV06) {
		this.facadeTwoWindowRV06 = facadeTwoWindowRV06;
		this.setFacadeTwoWindowRV(06, facadeTwoWindowRV06);
		notifier.fireValueChange("facadeTwoWindowRV06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 06, 2, facadeTwoWindowRV06);}
	}

	/**
	 * @return the facadeTwoWindowRV07
	 */
	public double getFacadeTwoWindowRV07() {
		return facadeTwoWindowRV07;
	}

	/**
	 * @param facadeTwoWindowRV07 the facadeTwoWindowRV07 to set
	 */
	public void setFacadeTwoWindowRV07(double facadeTwoWindowRV07) {
		this.facadeTwoWindowRV07 = facadeTwoWindowRV07;
		this.setFacadeTwoWindowRV(07, facadeTwoWindowRV07);
		notifier.fireValueChange("facadeTwoWindowRV07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 07, 2, facadeTwoWindowRV07);}
	}

	/**
	 * @return the facadeTwoWindowRV08
	 */
	public double getFacadeTwoWindowRV08() {
		return facadeTwoWindowRV08;
	}

	/**
	 * @param facadeTwoWindowRV08 the facadeTwoWindowRV08 to set
	 */
	public void setFacadeTwoWindowRV08(double facadeTwoWindowRV08) {
		this.facadeTwoWindowRV08 = facadeTwoWindowRV08;
		this.setFacadeTwoWindowRV(8, facadeTwoWindowRV08);
		notifier.fireValueChange("facadeTwoWindowRV08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 8, 2, facadeTwoWindowRV08);}
	}

	/**
	 * @return the facadeTwoWindowRV09
	 */
	public double getFacadeTwoWindowRV09() {
		return facadeTwoWindowRV09;
	}

	/**
	 * @param facadeTwoWindowRV09 the facadeTwoWindowRV09 to set
	 */
	public void setFacadeTwoWindowRV09(double facadeTwoWindowRV09) {
		this.facadeTwoWindowRV09 = facadeTwoWindowRV09;
		this.setFacadeTwoWindowRV(9, facadeTwoWindowRV09);
		notifier.fireValueChange("facadeTwoWindowRV09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 9, 2, facadeTwoWindowRV09);}
	}

	/**
	 * @return the facadeTwoWindowRV10
	 */
	public double getFacadeTwoWindowRV10() {
		return facadeTwoWindowRV10;
	}

	/**
	 * @param facadeTwoWindowRV10 the facadeTwoWindowRV10 to set
	 */
	public void setFacadeTwoWindowRV10(double facadeTwoWindowRV10) {
		this.facadeTwoWindowRV10 = facadeTwoWindowRV10;
		this.setFacadeTwoWindowRV(10, facadeTwoWindowRV10);
		notifier.fireValueChange("facadeTwoWindowRV10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 10, 2, facadeTwoWindowRV10);}
	}

	/**
	 * @return the facadeTwoWindowRV11
	 */
	public double getFacadeTwoWindowRV11() {
		return facadeTwoWindowRV11;
	}

	/**
	 * @param facadeTwoWindowRV11 the facadeTwoWindowRV11 to set
	 */
	public void setFacadeTwoWindowRV11(double facadeTwoWindowRV11) {
		this.facadeTwoWindowRV11 = facadeTwoWindowRV11;
		this.setFacadeTwoWindowRV(11, facadeTwoWindowRV11);
		notifier.fireValueChange("facadeTwoWindowRV11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 11, 2, facadeTwoWindowRV11);}
	}

	/**
	 * @return the facadeTwoWindowRV12
	 */
	public double getFacadeTwoWindowRV12() {
		return facadeTwoWindowRV12;
	}

	/**
	 * @param facadeTwoWindowRV12 the facadeTwoWindowRV12 to set
	 */
	public void setFacadeTwoWindowRV12(double facadeTwoWindowRV12) {
		this.facadeTwoWindowRV12 = facadeTwoWindowRV12;
		this.setFacadeTwoWindowRV(12, facadeTwoWindowRV12);
		notifier.fireValueChange("facadeTwoWindowRV12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 12, 2, facadeTwoWindowRV12);}
	}

	/**
	 * @return the facadeTwoWindowRV13
	 */
	public double getFacadeTwoWindowRV13() {
		return facadeTwoWindowRV13;
	}

	/**
	 * @param facadeTwoWindowRV13 the facadeTwoWindowRV13 to set
	 */
	public void setFacadeTwoWindowRV13(double facadeTwoWindowRV13) {
		this.facadeTwoWindowRV13 = facadeTwoWindowRV13;
		this.setFacadeTwoWindowRV(13, facadeTwoWindowRV13);
		notifier.fireValueChange("facadeTwoWindowRV13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 13, 2, facadeTwoWindowRV13);}
	}

	/**
	 * @return the facadeTwoWindowRV14
	 */
	public double getFacadeTwoWindowRV14() {
		return facadeTwoWindowRV14;
	}

	/**
	 * @param facadeTwoWindowRV14 the facadeTwoWindowRV14 to set
	 */
	public void setFacadeTwoWindowRV14(double facadeTwoWindowRV14) {
		this.facadeTwoWindowRV14 = facadeTwoWindowRV14;
		this.setFacadeTwoWindowRV(14, facadeTwoWindowRV14);
		notifier.fireValueChange("facadeTwoWindowRV14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 14, 2, facadeTwoWindowRV14);}
	}

	/**
	 * @return the facadeTwoWindowRV15
	 */
	public double getFacadeTwoWindowRV15() {
		return facadeTwoWindowRV15;
	}

	/**
	 * @param facadeTwoWindowRV15 the facadeTwoWindowRV15 to set
	 */
	public void setFacadeTwoWindowRV15(double facadeTwoWindowRV15) {
		this.facadeTwoWindowRV15 = facadeTwoWindowRV15;
		this.setFacadeTwoWindowRV(15, facadeTwoWindowRV15);
		notifier.fireValueChange("facadeTwoWindowRV15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(1, 15, 2, facadeTwoWindowRV15);}
	}

	/**
	 * @return the facadeThreeWindowRV00
	 */
	public double getFacadeThreeWindowRV00() {
		return facadeThreeWindowRV00;
	}

	/**
	 * @param facadeThreeWindowRV00 the facadeThreeWindowRV00 to set
	 */
	public void setFacadeThreeWindowRV00(double facadeThreeWindowRV00) {
		this.facadeThreeWindowRV00 = facadeThreeWindowRV00;
		this.setFacadeThreeWindowRV(00, facadeThreeWindowRV00);
		notifier.fireValueChange("facadeThreeWindowRV00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 00, 2, facadeThreeWindowRV00);}
	}

	/**
	 * @return the facadeThreeWindowRV01
	 */
	public double getFacadeThreeWindowRV01() {
		return facadeThreeWindowRV01;
	}

	/**
	 * @param facadeThreeWindowRV01 the facadeThreeWindowRV01 to set
	 */
	public void setFacadeThreeWindowRV01(double facadeThreeWindowRV01) {
		this.facadeThreeWindowRV01 = facadeThreeWindowRV01;
		this.setFacadeThreeWindowRV(01, facadeThreeWindowRV01);
		notifier.fireValueChange("facadeThreeWindowRV01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 01, 2, facadeThreeWindowRV01);}
	}

	/**
	 * @return the facadeThreeWindowRV02
	 */
	public double getFacadeThreeWindowRV02() {
		return facadeThreeWindowRV02;
	}

	/**
	 * @param facadeThreeWindowRV02 the facadeThreeWindowRV02 to set
	 */
	public void setFacadeThreeWindowRV02(double facadeThreeWindowRV02) {
		this.facadeThreeWindowRV02 = facadeThreeWindowRV02;
		this.setFacadeThreeWindowRV(02, facadeThreeWindowRV02);
		notifier.fireValueChange("facadeThreeWindowRV02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 02, 2, facadeThreeWindowRV02);}
	}

	/**
	 * @return the facadeThreeWindowRV03
	 */
	public double getFacadeThreeWindowRV03() {
		return facadeThreeWindowRV03;
	}

	/**
	 * @param facadeThreeWindowRV03 the facadeThreeWindowRV03 to set
	 */
	public void setFacadeThreeWindowRV03(double facadeThreeWindowRV03) {
		this.facadeThreeWindowRV03 = facadeThreeWindowRV03;
		this.setFacadeThreeWindowRV(03, facadeThreeWindowRV03);
		notifier.fireValueChange("facadeThreeWindowRV03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 03, 2, facadeThreeWindowRV03);}
	}

	/**
	 * @return the facadeThreeWindowRV04
	 */
	public double getFacadeThreeWindowRV04() {
		return facadeThreeWindowRV04;
	}

	/**
	 * @param facadeThreeWindowRV04 the facadeThreeWindowRV04 to set
	 */
	public void setFacadeThreeWindowRV04(double facadeThreeWindowRV04) {
		this.facadeThreeWindowRV04 = facadeThreeWindowRV04;
		this.setFacadeThreeWindowRV(04, facadeThreeWindowRV04);
		notifier.fireValueChange("facadeThreeWindowRV04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 04, 2, facadeThreeWindowRV04);}
	}

	/**
	 * @return the facadeThreeWindowRV05
	 */
	public double getFacadeThreeWindowRV05() {
		return facadeThreeWindowRV05;
	}

	/**
	 * @param facadeThreeWindowRV05 the facadeThreeWindowRV05 to set
	 */
	public void setFacadeThreeWindowRV05(double facadeThreeWindowRV05) {
		this.facadeThreeWindowRV05 = facadeThreeWindowRV05;
		this.setFacadeThreeWindowRV(05, facadeThreeWindowRV05);
		notifier.fireValueChange("facadeThreeWindowRV05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 05, 2, facadeThreeWindowRV05);}
	}

	/**
	 * @return the facadeThreeWindowRV06
	 */
	public double getFacadeThreeWindowRV06() {
		return facadeThreeWindowRV06;
	}

	/**
	 * @param facadeThreeWindowRV06 the facadeThreeWindowRV06 to set
	 */
	public void setFacadeThreeWindowRV06(double facadeThreeWindowRV06) {
		this.facadeThreeWindowRV06 = facadeThreeWindowRV06;
		this.setFacadeThreeWindowRV(06, facadeThreeWindowRV06);
		notifier.fireValueChange("facadeThreeWindowRV06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 06, 2, facadeThreeWindowRV06);}
	}

	/**
	 * @return the facadeThreeWindowRV07
	 */
	public double getFacadeThreeWindowRV07() {
		return facadeThreeWindowRV07;
	}

	/**
	 * @param facadeThreeWindowRV07 the facadeThreeWindowRV07 to set
	 */
	public void setFacadeThreeWindowRV07(double facadeThreeWindowRV07) {
		this.facadeThreeWindowRV07 = facadeThreeWindowRV07;
		this.setFacadeThreeWindowRV(07, facadeThreeWindowRV07);
		notifier.fireValueChange("facadeThreeWindowRV07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 07, 2, facadeThreeWindowRV07);}
	}

	/**
	 * @return the facadeThreeWindowRV08
	 */
	public double getFacadeThreeWindowRV08() {
		return facadeThreeWindowRV08;
	}

	/**
	 * @param facadeThreeWindowRV08 the facadeThreeWindowRV08 to set
	 */
	public void setFacadeThreeWindowRV08(double facadeThreeWindowRV08) {
		this.facadeThreeWindowRV08 = facadeThreeWindowRV08;
		this.setFacadeThreeWindowRV(8, facadeThreeWindowRV08);
		notifier.fireValueChange("facadeThreeWindowRV08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 8, 2, facadeThreeWindowRV08);}
	}

	/**
	 * @return the facadeThreeWindowRV09
	 */
	public double getFacadeThreeWindowRV09() {
		return facadeThreeWindowRV09;
	}

	/**
	 * @param facadeThreeWindowRV09 the facadeThreeWindowRV09 to set
	 */
	public void setFacadeThreeWindowRV09(double facadeThreeWindowRV09) {
		this.facadeThreeWindowRV09 = facadeThreeWindowRV09;
		this.setFacadeThreeWindowRV(9, facadeThreeWindowRV09);
		notifier.fireValueChange("facadeThreeWindowRV09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 9, 2, facadeThreeWindowRV09);}
	}

	/**
	 * @return the facadeThreeWindowRV10
	 */
	public double getFacadeThreeWindowRV10() {
		return facadeThreeWindowRV10;
	}

	/**
	 * @param facadeThreeWindowRV10 the facadeThreeWindowRV10 to set
	 */
	public void setFacadeThreeWindowRV10(double facadeThreeWindowRV10) {
		this.facadeThreeWindowRV10 = facadeThreeWindowRV10;
		this.setFacadeThreeWindowRV(10, facadeThreeWindowRV10);
		notifier.fireValueChange("facadeThreeWindowRV10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 10, 2, facadeThreeWindowRV10);}
	}

	/**
	 * @return the facadeThreeWindowRV11
	 */
	public double getFacadeThreeWindowRV11() {
		return facadeThreeWindowRV11;
	}

	/**
	 * @param facadeThreeWindowRV11 the facadeThreeWindowRV11 to set
	 */
	public void setFacadeThreeWindowRV11(double facadeThreeWindowRV11) {
		this.facadeThreeWindowRV11 = facadeThreeWindowRV11;
		this.setFacadeThreeWindowRV(11, facadeThreeWindowRV11);
		notifier.fireValueChange("facadeThreeWindowRV11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 11, 2, facadeThreeWindowRV11);}
	}

	/**
	 * @return the facadeThreeWindowRV12
	 */
	public double getFacadeThreeWindowRV12() {
		return facadeThreeWindowRV12;
	}

	/**
	 * @param facadeThreeWindowRV12 the facadeThreeWindowRV12 to set
	 */
	public void setFacadeThreeWindowRV12(double facadeThreeWindowRV12) {
		this.facadeThreeWindowRV12 = facadeThreeWindowRV12;
		this.setFacadeThreeWindowRV(12, facadeThreeWindowRV12);
		notifier.fireValueChange("facadeThreeWindowRV12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 12, 2, facadeThreeWindowRV12);}
	}

	/**
	 * @return the facadeThreeWindowRV13
	 */
	public double getFacadeThreeWindowRV13() {
		return facadeThreeWindowRV13;
	}

	/**
	 * @param facadeThreeWindowRV13 the facadeThreeWindowRV13 to set
	 */
	public void setFacadeThreeWindowRV13(double facadeThreeWindowRV13) {
		this.facadeThreeWindowRV13 = facadeThreeWindowRV13;
		this.setFacadeThreeWindowRV(13, facadeThreeWindowRV13);
		notifier.fireValueChange("facadeThreeWindowRV13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 13, 2, facadeThreeWindowRV13);}
	}

	/**
	 * @return the facadeThreeWindowRV14
	 */
	public double getFacadeThreeWindowRV14() {
		return facadeThreeWindowRV14;
	}

	/**
	 * @param facadeThreeWindowRV14 the facadeThreeWindowRV14 to set
	 */
	public void setFacadeThreeWindowRV14(double facadeThreeWindowRV14) {
		this.facadeThreeWindowRV14 = facadeThreeWindowRV14;
		this.setFacadeThreeWindowRV(14, facadeThreeWindowRV14);
		notifier.fireValueChange("facadeThreeWindowRV14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 14, 2, facadeThreeWindowRV14);}
	}

	/**
	 * @return the facadeThreeWindowRV15
	 */
	public double getFacadeThreeWindowRV15() {
		return facadeThreeWindowRV15;
	}

	/**
	 * @param facadeThreeWindowRV15 the facadeThreeWindowRV15 to set
	 */
	public void setFacadeThreeWindowRV15(double facadeThreeWindowRV15) {
		this.facadeThreeWindowRV15 = facadeThreeWindowRV15;
		this.setFacadeThreeWindowRV(15, facadeThreeWindowRV15);
		notifier.fireValueChange("facadeThreeWindowRV15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(2, 15, 2, facadeThreeWindowRV15);}
	}

	/**
	 * @return the facadeFourWindowRV00
	 */
	public double getFacadeFourWindowRV00() {
		return facadeFourWindowRV00;
	}

	/**
	 * @param facadeFourWindowRV00 the facadeFourWindowRV00 to set
	 */
	public void setFacadeFourWindowRV00(double facadeFourWindowRV00) {
		this.facadeFourWindowRV00 = facadeFourWindowRV00;
		this.setFacadeFourWindowRV(00, facadeFourWindowRV00);
		notifier.fireValueChange("facadeFourWindowRV00");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 00, 2, facadeFourWindowRV00);}
	}

	/**
	 * @return the facadeFourWindowRV01
	 */
	public double getFacadeFourWindowRV01() {
		return facadeFourWindowRV01;
	}

	/**
	 * @param facadeFourWindowRV01 the facadeFourWindowRV01 to set
	 */
	public void setFacadeFourWindowRV01(double facadeFourWindowRV01) {
		this.facadeFourWindowRV01 = facadeFourWindowRV01;
		this.setFacadeFourWindowRV(01, facadeFourWindowRV01);
		notifier.fireValueChange("facadeFourWindowRV01");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 01, 2, facadeFourWindowRV01);}
	}

	/**
	 * @return the facadeFourWindowRV02
	 */
	public double getFacadeFourWindowRV02() {
		return facadeFourWindowRV02;
	}

	/**
	 * @param facadeFourWindowRV02 the facadeFourWindowRV02 to set
	 */
	public void setFacadeFourWindowRV02(double facadeFourWindowRV02) {
		this.facadeFourWindowRV02 = facadeFourWindowRV02;
		this.setFacadeFourWindowRV(02, facadeFourWindowRV02);
		notifier.fireValueChange("facadeFourWindowRV02");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 02, 2, facadeFourWindowRV02);}
	}

	/**
	 * @return the facadeFourWindowRV03
	 */
	public double getFacadeFourWindowRV03() {
		return facadeFourWindowRV03;
	}

	/**
	 * @param facadeFourWindowRV03 the facadeFourWindowRV03 to set
	 */
	public void setFacadeFourWindowRV03(double facadeFourWindowRV03) {
		this.facadeFourWindowRV03 = facadeFourWindowRV03;
		this.setFacadeFourWindowRV(03, facadeFourWindowRV03);
		notifier.fireValueChange("facadeFourWindowRV03");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 03, 2, facadeFourWindowRV03);}
	}

	/**
	 * @return the facadeFourWindowRV04
	 */
	public double getFacadeFourWindowRV04() {
		return facadeFourWindowRV04;
	}

	/**
	 * @param facadeFourWindowRV04 the facadeFourWindowRV04 to set
	 */
	public void setFacadeFourWindowRV04(double facadeFourWindowRV04) {
		this.facadeFourWindowRV04 = facadeFourWindowRV04;
		this.setFacadeFourWindowRV(04, facadeFourWindowRV04);
		notifier.fireValueChange("facadeFourWindowRV04");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 04, 2, facadeFourWindowRV04);}
	}

	/**
	 * @return the facadeFourWindowRV05
	 */
	public double getFacadeFourWindowRV05() {
		return facadeFourWindowRV05;
	}

	/**
	 * @param facadeFourWindowRV05 the facadeFourWindowRV05 to set
	 */
	public void setFacadeFourWindowRV05(double facadeFourWindowRV05) {
		this.facadeFourWindowRV05 = facadeFourWindowRV05;
		this.setFacadeFourWindowRV(05, facadeFourWindowRV05);
		notifier.fireValueChange("facadeFourWindowRV05");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 05, 2, facadeFourWindowRV05);}
	}

	/**
	 * @return the facadeFourWindowRV06
	 */
	public double getFacadeFourWindowRV06() {
		return facadeFourWindowRV06;
	}

	/**
	 * @param facadeFourWindowRV06 the facadeFourWindowRV06 to set
	 */
	public void setFacadeFourWindowRV06(double facadeFourWindowRV06) {
		this.facadeFourWindowRV06 = facadeFourWindowRV06;
		this.setFacadeFourWindowRV(06, facadeFourWindowRV06);
		notifier.fireValueChange("facadeFourWindowRV06");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 06, 2, facadeFourWindowRV06);}
	}

	/**
	 * @return the facadeFourWindowRV07
	 */
	public double getFacadeFourWindowRV07() {
		return facadeFourWindowRV07;
	}

	/**
	 * @param facadeFourWindowRV07 the facadeFourWindowRV07 to set
	 */
	public void setFacadeFourWindowRV07(double facadeFourWindowRV07) {
		this.facadeFourWindowRV07 = facadeFourWindowRV07;
		this.setFacadeFourWindowRV(07, facadeFourWindowRV07);
		notifier.fireValueChange("facadeFourWindowRV07");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 07, 2, facadeFourWindowRV07);}
	}

	/**
	 * @return the facadeFourWindowRV08
	 */
	public double getFacadeFourWindowRV08() {
		return facadeFourWindowRV08;
	}

	/**
	 * @param facadeFourWindowRV08 the facadeFourWindowRV08 to set
	 */
	public void setFacadeFourWindowRV08(double facadeFourWindowRV08) {
		this.facadeFourWindowRV08 = facadeFourWindowRV08;
		this.setFacadeFourWindowRV(8, facadeFourWindowRV08);
		notifier.fireValueChange("facadeFourWindowRV08");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 8, 2, facadeFourWindowRV08);}
	}

	/**
	 * @return the facadeFourWindowRV09
	 */
	public double getFacadeFourWindowRV09() {
		return facadeFourWindowRV09;
	}

	/**
	 * @param facadeFourWindowRV09 the facadeFourWindowRV09 to set
	 */
	public void setFacadeFourWindowRV09(double facadeFourWindowRV09) {
		this.facadeFourWindowRV09 = facadeFourWindowRV09;
		this.setFacadeFourWindowRV(9, facadeFourWindowRV09);
		notifier.fireValueChange("facadeFourWindowRV09");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 9, 2, facadeFourWindowRV09);}
	}

	/**
	 * @return the facadeFourWindowRV10
	 */
	public double getFacadeFourWindowRV10() {
		return facadeFourWindowRV10;
	}

	/**
	 * @param facadeFourWindowRV10 the facadeFourWindowRV10 to set
	 */
	public void setFacadeFourWindowRV10(double facadeFourWindowRV10) {
		this.facadeFourWindowRV10 = facadeFourWindowRV10;
		this.setFacadeFourWindowRV(10, facadeFourWindowRV10);
		notifier.fireValueChange("facadeFourWindowRV10");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 10, 2, facadeFourWindowRV10);}
	}

	/**
	 * @return the facadeFourWindowRV11
	 */
	public double getFacadeFourWindowRV11() {
		return facadeFourWindowRV11;
	}

	/**
	 * @param facadeFourWindowRV11 the facadeFourWindowRV11 to set
	 */
	public void setFacadeFourWindowRV11(double facadeFourWindowRV11) {
		this.facadeFourWindowRV11 = facadeFourWindowRV11;
		this.setFacadeFourWindowRV(11, facadeFourWindowRV11);
		notifier.fireValueChange("facadeFourWindowRV11");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 11, 2, facadeFourWindowRV11);}
	}

	/**
	 * @return the facadeFourWindowRV12
	 */
	public double getFacadeFourWindowRV12() {
		return facadeFourWindowRV12;
	}

	/**
	 * @param facadeFourWindowRV12 the facadeFourWindowRV12 to set
	 */
	public void setFacadeFourWindowRV12(double facadeFourWindowRV12) {
		this.facadeFourWindowRV12 = facadeFourWindowRV12;
		this.setFacadeFourWindowRV(12, facadeFourWindowRV12);
		notifier.fireValueChange("facadeFourWindowRV12");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 12, 2, facadeFourWindowRV12);}
	}

	/**
	 * @return the facadeFourWindowRV13
	 */
	public double getFacadeFourWindowRV13() {
		return facadeFourWindowRV13;
	}

	/**
	 * @param facadeFourWindowRV13 the facadeFourWindowRV13 to set
	 */
	public void setFacadeFourWindowRV13(double facadeFourWindowRV13) {
		this.facadeFourWindowRV13 = facadeFourWindowRV13;
		this.setFacadeFourWindowRV(13, facadeFourWindowRV13);
		notifier.fireValueChange("facadeFourWindowRV13");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 13, 2, facadeFourWindowRV13);}
	}

	/**
	 * @return the facadeFourWindowRV14
	 */
	public double getFacadeFourWindowRV14() {
		return facadeFourWindowRV14;
	}

	/**
	 * @param facadeFourWindowRV14 the facadeFourWindowRV14 to set
	 */
	public void setFacadeFourWindowRV14(double facadeFourWindowRV14) {
		this.facadeFourWindowRV14 = facadeFourWindowRV14;
		this.setFacadeFourWindowRV(14, facadeFourWindowRV14);
		notifier.fireValueChange("facadeFourWindowRV14");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 14, 2, facadeFourWindowRV14);}
	}

	/**
	 * @return the facadeFourWindowRV15
	 */
	public double getFacadeFourWindowRV15() {
		return facadeFourWindowRV15;
	}

	/**
	 * @param facadeFourWindowRV15 the facadeFourWindowRV15 to set
	 */
	public void setFacadeFourWindowRV15(double facadeFourWindowRV15) {
		this.facadeFourWindowRV15 = facadeFourWindowRV15;
		this.setFacadeFourWindowRV(15, facadeFourWindowRV15);
		notifier.fireValueChange("facadeFourWindowRV15");
		if (saveValues) {this.projectInstance.setFacadeWindowHeadCillRevealArray(3, 15, 2, facadeFourWindowRV15);}
	}


	// -- END AUTO GEN -- // 
}